refactor [api]: generalise com views

This commit is contained in:
Alice 2022-04-03 01:20:54 +02:00
parent 3d1ae17114
commit 761dcb728b

View file

@ -1,6 +1,9 @@
# from django.shortcuts import render
from typing import Callable
from rest_framework import viewsets
from rest_framework.decorators import action
from rest_framework.renderers import StaticHTMLRenderer
from rest_framework.response import Response
from myapi.renderers import LatexRenderer, PlainTextRenderer
@ -13,15 +16,16 @@ class FilmViewSet(viewsets.ModelViewSet):
queryset = Film.objects.all().order_by("projection_date")
serializer_class = FilmSerializer
def general_com_view(self, com_function: Callable[[Film], str]):
film: Film = self.get_object()
preview_text = com_function(film)
return Response(preview_text)
# TODO confirm that latex renderer is not a problem
@action(detail=True, renderer_classes=[LatexRenderer], methods=["GET"])
def bocal(self, request, pk=None):
film: Film = self.get_object()
bocal_text = com.bocal(film)
return Response(bocal_text)
return self.general_com_view(com.bocal)
@action(detail=True, renderer_classes=[PlainTextRenderer], methods=["GET"])
def facebook(self, request, pk=None):
film: Film = self.get_object()
fb_text = com.facebook(film)
return Response(fb_text)
return self.general_com_view(com.facebook)