Some serialization BS
This commit is contained in:
+25
-13
@@ -9,8 +9,10 @@ from django.http import HttpResponse, JsonResponse
|
||||
from django.shortcuts import render, get_object_or_404
|
||||
from django.views.decorators.http import require_http_methods
|
||||
from django_filters import rest_framework as filters
|
||||
from django.db.models import Prefetch
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from rest_framework import routers, viewsets
|
||||
from rest_framework import routers
|
||||
from rest_framework.viewsets import ModelViewSet, ReadOnlyModelViewSet
|
||||
from rest_framework.filters import OrderingFilter, SearchFilter
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.permissions import IsAuthenticatedOrReadOnly, BasePermission, AllowAny
|
||||
@@ -37,7 +39,7 @@ class RootView(routers.APIRootView):
|
||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||
|
||||
|
||||
class EventViewSet(viewsets.ModelViewSet):
|
||||
class EventViewSet(ModelViewSet):
|
||||
queryset = Event.objects.all()
|
||||
ordering = ["start_time"]
|
||||
serializer_class = EventSerializer
|
||||
@@ -47,13 +49,23 @@ class EventViewSet(viewsets.ModelViewSet):
|
||||
# search_fields = '__all__'
|
||||
|
||||
def get_queryset(self):
|
||||
if self.request.user.is_authenticated:
|
||||
|
||||
if self.request.method == 'POST' or self.request.method == 'PUT':
|
||||
return Event.objects.all()
|
||||
|
||||
if self.request.user.is_authenticated:
|
||||
return Event.objects.all().prefetch_related(
|
||||
Prefetch('signupForm', queryset=SignupForm.objects.all(), to_attr='filtered_signup_forms')
|
||||
)
|
||||
|
||||
since = self.request.query_params.get('since', None)
|
||||
if since:
|
||||
return Event.objects.filter(visible=True, end_time__gt=since).order_by('start_time')
|
||||
return Event.objects.filter(visible=True, end_time__gt=timezone.now()).order_by('start_time')
|
||||
return Event.objects.filter(visible=True, end_time__gt=since).order_by('start_time').prefetch_related(
|
||||
Prefetch('signupForm', queryset=SignupForm.objects.filter(visible=True), to_attr='filtered_signup_forms')
|
||||
)
|
||||
return Event.objects.filter(visible=True, end_time__gt=timezone.now()).order_by('start_time').prefetch_related(
|
||||
Prefetch('signupForm', queryset=SignupForm.objects.filter(visible=True), to_attr='filtered_signup_forms')
|
||||
)
|
||||
|
||||
def create(self, request, *args, **kwargs):
|
||||
raw_image = request.data.get("image", None)
|
||||
@@ -74,7 +86,7 @@ class EventViewSet(viewsets.ModelViewSet):
|
||||
return super().update(request, *args, **kwargs)
|
||||
|
||||
|
||||
class SignupFormViewSet(viewsets.ModelViewSet):
|
||||
class SignupFormViewSet(ModelViewSet):
|
||||
queryset = SignupForm.objects.all()
|
||||
serializer_class = SignupFormSerializer
|
||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||
@@ -95,7 +107,7 @@ class SignupFormViewSet(viewsets.ModelViewSet):
|
||||
return SignupForm.objects.filter(visible=True, end_time__gt=timezone.now()).order_by('start_time')
|
||||
|
||||
|
||||
class SignupViewSet(viewsets.ModelViewSet):
|
||||
class SignupViewSet(ModelViewSet):
|
||||
queryset = Signup.objects.all()
|
||||
serializer_class = SignupSerializer
|
||||
permission_classes = [SignupPermission]
|
||||
@@ -116,7 +128,7 @@ class SignupViewSet(viewsets.ModelViewSet):
|
||||
try:
|
||||
answer = request.data["answer"]
|
||||
form = SignupForm.objects.get(id=id)
|
||||
if (form.visible):
|
||||
if (form.isOpen):
|
||||
# Throws ValidationError if not valid
|
||||
validate(instance=answer, schema=form.schema)
|
||||
return super().create(request, *args, **kwargs)
|
||||
@@ -147,13 +159,13 @@ class SignupViewSet(viewsets.ModelViewSet):
|
||||
return JsonResponse(status=404, data={"error": f"SignupForm {id} not found"})
|
||||
|
||||
|
||||
class SavedQuestionsViewSet(viewsets.ModelViewSet):
|
||||
class SavedQuestionsViewSet(ModelViewSet):
|
||||
queryset = TemplateQuestion.objects.all()
|
||||
serializer_class = SavedQuestionsSerializer
|
||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||
|
||||
|
||||
class FeedViewSet(viewsets.ModelViewSet):
|
||||
class FeedViewSet(ModelViewSet):
|
||||
queryset = Feed.objects.all()
|
||||
serializer_class = FeedSerializer
|
||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||
@@ -178,7 +190,7 @@ class FeedViewSet(viewsets.ModelViewSet):
|
||||
return Feed.objects.filter(id__in=result_ids)
|
||||
|
||||
|
||||
class ContactsViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
class ContactsViewSet(ReadOnlyModelViewSet):
|
||||
queryset = Occupation.objects.all()
|
||||
serializer_class = OccupationSerializer
|
||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||
@@ -190,13 +202,13 @@ class ContactsViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
return Occupation.by_year(int(year))
|
||||
|
||||
|
||||
class CommitteeViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
class CommitteeViewSet(ReadOnlyModelViewSet):
|
||||
queryset = Committee.objects.all()
|
||||
serializer_class = CommitteeSerializer
|
||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||
|
||||
|
||||
class TagsViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
class TagsViewSet(ReadOnlyModelViewSet):
|
||||
queryset = Tag.objects.all()
|
||||
serializer_class = TagSerializer
|
||||
permission_classes = [IsAuthenticatedOrReadOnly]
|
||||
|
||||
Reference in New Issue
Block a user