bullish/backend/app/views.py
Ameya Shenoy fd61d1231f
feat: productionize images for deploy
Signed-off-by: Ameya Shenoy <shenoy.ameya@gmail.com>
2021-02-12 00:58:26 +05:30

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())