54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
|
|
# third-party imports
|
|
from rest_framework.response import Response
|
|
from rest_framework import generics
|
|
from django_redis import get_redis_connection
|
|
from django.utils.decorators import method_decorator
|
|
from django.views.decorators.cache import cache_page
|
|
|
|
# app imports
|
|
from app.models import BhavCopyEquity
|
|
from app.serializers import BhavCopyEquitySerializer
|
|
from app.utils import populate_bhav_copy_data
|
|
|
|
|
|
cache = get_redis_connection("default")
|
|
|
|
|
|
# Create your views here.
|
|
class BhavCopyEquityView(generics.RetrieveAPIView):
|
|
queryset = BhavCopyEquity.objects.all()
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
queryset = self.get_queryset()
|
|
serializer = BhavCopyEquitySerializer(queryset, many=True)
|
|
return Response(serializer.data)
|
|
|
|
|
|
class BhavCopyEquityDefaultRedisView(generics.RetrieveAPIView):
|
|
queryset = BhavCopyEquity.objects.all()
|
|
|
|
@method_decorator(cache_page(60*60*2))
|
|
def get(self, request, *args, **kwargs):
|
|
queryset = self.get_queryset()
|
|
serializer = BhavCopyEquitySerializer(queryset, many=True)
|
|
return Response(serializer.data)
|
|
|
|
|
|
class EmptyRespoinseView(generics.RetrieveAPIView):
|
|
def get(self, request, *args, **kwargs):
|
|
return Response([])
|
|
|
|
|
|
class BhavCopyEquityCustomRedisView(generics.RetrieveAPIView):
|
|
def get(self, request, *args, **kwargs):
|
|
# TODO: try stringified json
|
|
pipe = cache.pipeline()
|
|
stocks = cache.lrange("stocks", 0, -1)
|
|
if len(stocks) == 0:
|
|
populate_bhav_copy_data()
|
|
stocks = cache.lrange("stocks", 0, -1)
|
|
for stock in stocks:
|
|
pipe.hgetall(f"stock:{stock}")
|
|
return Response(pipe.execute())
|
|
|