From 786dbfc739e741a07c8ccc92c326389537742a22 Mon Sep 17 00:00:00 2001 From: "a.gorbunov" Date: Wed, 5 Feb 2020 12:47:23 +0000 Subject: [PATCH] check by content_type --- apps/establishment/views/back.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/apps/establishment/views/back.py b/apps/establishment/views/back.py index b6226170..4bfc58fd 100644 --- a/apps/establishment/views/back.py +++ b/apps/establishment/views/back.py @@ -1,5 +1,6 @@ """Establishment app views.""" from django.conf import settings +from django.contrib.contenttypes.models import ContentType from django.db import transaction from django.db.models.query_utils import Q from django.http import Http404 @@ -950,3 +951,28 @@ class TeamMemberDeleteView(generics.DestroyAPIView): team_role_revoked.delay(self.kwargs['user_id'], self.request.country_code, establishment.name) else: team_role_revoked(self.kwargs['user_id'], self.request.country_code, establishment.name) + + +class EstablishmentAwardCreateAndBind(generics.CreateAPIView, generics.DestroyAPIView): + queryset = main_models.Award.objects.with_base_related().all() + permission_classes = get_permission_classes() + serializer_class = serializers.BackEstablishmentAwardCreateSerializer + + def _award_list_for_establishment(self, establishment_id: int, status: int) -> Response: + awards = main_models.Award.objects.with_base_related().filter( + object_id=establishment_id, + content_type=ContentType.objects.get_for_model(models.Establishment) + ) + response_serializer = main_serializers.AwardBaseSerializer(awards, many=True) + headers = self.get_success_headers(response_serializer.data) + return Response(response_serializer.data, status=status, headers=headers) + + def create(self, request, *args, **kwargs): + """Overridden create method.""" + super().create(request, args, kwargs) + return self._award_list_for_establishment(kwargs['establishment_id'], status.HTTP_201_CREATED) + + def delete(self, request, *args, **kwargs): + establishment = get_object_or_404(models.Establishment, id=kwargs['establishment_id']) + establishment.remove_award(kwargs['award_id']) + return self._award_list_for_establishment(kwargs['establishment_id'], status.HTTP_200_OK) \ No newline at end of file