aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/viewsets
diff options
context:
space:
mode:
authorGravatar ks129 <[email protected]>2021-02-24 08:38:13 +0200
committerGravatar ks129 <[email protected]>2021-02-24 08:38:13 +0200
commit3edb416ba86c62d62c0258d4c69f967e47765186 (patch)
tree208f881b4246b6033bb5f9674c358c6050f9d7d4 /pydis_site/apps/api/viewsets
parentAdd entries field to Nomination serializer (diff)
Simplify nominations viewset
After moving entries to nomination serializer we can get rid from GET request handlers and let DRF handle this. Also PATCH and POST handlers got some simplification by removing manual entries setting.
Diffstat (limited to 'pydis_site/apps/api/viewsets')
-rw-r--r--pydis_site/apps/api/viewsets/bot/nomination.py51
1 files changed, 3 insertions, 48 deletions
diff --git a/pydis_site/apps/api/viewsets/bot/nomination.py b/pydis_site/apps/api/viewsets/bot/nomination.py
index 7820ca0d..e3e71ca2 100644
--- a/pydis_site/apps/api/viewsets/bot/nomination.py
+++ b/pydis_site/apps/api/viewsets/bot/nomination.py
@@ -176,40 +176,6 @@ class NominationViewSet(CreateModelMixin, RetrieveModelMixin, ListModelMixin, Ge
frozen_fields = ('id', 'inserted_at', 'user', 'ended_at')
frozen_on_create = ('ended_at', 'end_reason', 'active', 'inserted_at', 'reviewed')
- def list(self, request: HttpRequest, *args, **kwargs) -> Response:
- """
- DRF method for listing Nominations.
-
- Called by the Django Rest Framework in response to the corresponding HTTP request.
- """
- queryset = self.filter_queryset(self.get_queryset())
- data = NominationSerializer(queryset, many=True).data
-
- for i, nomination in enumerate(data):
- entries = NominationEntrySerializer(
- NominationEntry.objects.filter(nomination_id=nomination["id"]),
- many=True
- ).data
- data[i]["entries"] = entries
-
- return Response(data)
-
- def retrieve(self, request: HttpRequest, *args, **kwargs) -> Response:
- """
- DRF method for retrieving a Nomination.
-
- Called by the Django Rest Framework in response to the corresponding HTTP request.
- """
- nomination = self.get_object()
-
- data = NominationSerializer(nomination).data
- data["entries"] = NominationEntrySerializer(
- NominationEntry.objects.filter(nomination_id=nomination.id),
- many=True
- ).data
-
- return Response(data)
-
def create(self, request: HttpRequest, *args, **kwargs) -> Response:
"""
DRF method for creating a Nomination.
@@ -238,11 +204,9 @@ class NominationViewSet(CreateModelMixin, RetrieveModelMixin, ListModelMixin, Ge
data=ChainMap(request.data, {"nomination": nomination.id})
)
entry_serializer.is_valid(raise_exception=True)
-
- entry = NominationEntry.objects.create(**entry_serializer.validated_data)
+ NominationEntry.objects.create(**entry_serializer.validated_data)
data = NominationSerializer(nomination).data
- data["entries"] = NominationEntrySerializer([entry], many=True).data
headers = self.get_success_headers(data)
return Response(data, status=status.HTTP_201_CREATED, headers=headers)
@@ -264,10 +228,6 @@ class NominationViewSet(CreateModelMixin, RetrieveModelMixin, ListModelMixin, Ge
NominationEntry.objects.create(**entry_serializer.validated_data)
data = NominationSerializer(nomination_filter[0]).data
- data["entries"] = NominationEntrySerializer(
- NominationEntry.objects.filter(nomination_id=nomination_filter[0].id),
- many=True
- ).data
headers = self.get_success_headers(data)
return Response(data, status=status.HTTP_201_CREATED, headers=headers)
@@ -349,11 +309,6 @@ class NominationViewSet(CreateModelMixin, RetrieveModelMixin, ListModelMixin, Ge
entry.reason = request.data['reason']
entry.save()
- nomination = serializer.save()
- return_data = NominationSerializer(nomination).data
- return_data["entries"] = NominationEntrySerializer(
- NominationEntry.objects.filter(nomination_id=nomination.id),
- many=True
- ).data
+ serializer.save()
- return Response(return_data)
+ return Response(serializer.data)