feat [both]: separate public and admin routes
This commit is contained in:
parent
0edfb4b336
commit
0d6b6d41e5
7 changed files with 35 additions and 13 deletions
|
@ -1,10 +1,11 @@
|
|||
from django.urls import include, path
|
||||
from rest_framework import routers
|
||||
from .views.std_views import FilmViewSet
|
||||
from .views.std_views import AdminFilmViewSet, FilmViewSet
|
||||
from .views.tmdb_views import TmdbViewSet
|
||||
|
||||
router = routers.DefaultRouter()
|
||||
router.register(r"films", FilmViewSet)
|
||||
router.register(r"admin/films", AdminFilmViewSet, "admin-films")
|
||||
router.register(r"films", FilmViewSet, "films")
|
||||
router.register(r"tmdb", TmdbViewSet, "tmdb")
|
||||
|
||||
# Wire up our API using automatic URL routing.
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
# from django.shortcuts import render
|
||||
from datetime import datetime
|
||||
from typing import Callable
|
||||
|
||||
from rest_framework import viewsets
|
||||
from rest_framework import viewsets, mixins
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.renderers import StaticHTMLRenderer
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.viewsets import GenericViewSet
|
||||
|
||||
from myapi.renderers import LatexRenderer, PlainTextRenderer
|
||||
from myapi.serializers import FilmSerializer
|
||||
|
@ -12,7 +14,7 @@ from myapi.models import Film
|
|||
import myapi.services.com_service as com
|
||||
|
||||
|
||||
class FilmViewSet(viewsets.ModelViewSet):
|
||||
class AdminFilmViewSet(viewsets.ModelViewSet):
|
||||
queryset = Film.objects.all().order_by("projection_date")
|
||||
serializer_class = FilmSerializer
|
||||
|
||||
|
@ -42,3 +44,14 @@ class FilmViewSet(viewsets.ModelViewSet):
|
|||
@action(detail=True, methods=["GET"], renderer_classes=[PlainTextRenderer])
|
||||
def ics(self, request, pk=None):
|
||||
return self.general_com_view(com.ics)
|
||||
|
||||
|
||||
class FilmViewSet(mixins.RetrieveModelMixin, mixins.ListModelMixin, GenericViewSet):
|
||||
serializer_class = FilmSerializer
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = Film.objects.all().filter(is_confirmed=True).order_by("projection_date")
|
||||
past = self.request.query_params.get("past", False)
|
||||
if past:
|
||||
return queryset.filter(projection_date__date__lt=datetime.now())
|
||||
return queryset.filter(projection_date__date__gte=datetime.now())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue