Create a document ask for access resource.
(self, request, *args, **kwargs)
| 3000 | return queryset |
| 3001 | |
| 3002 | def create(self, request, *args, **kwargs): |
| 3003 | """Create a document ask for access resource.""" |
| 3004 | document = self.get_document_or_404() |
| 3005 | |
| 3006 | if document.get_role(request.user) in models.PRIVILEGED_ROLES: |
| 3007 | return drf.response.Response( |
| 3008 | {"detail": "You already have privileged access to this document."}, |
| 3009 | status=drf.status.HTTP_400_BAD_REQUEST, |
| 3010 | ) |
| 3011 | |
| 3012 | serializer = serializers.DocumentAskForAccessCreateSerializer(data=request.data) |
| 3013 | serializer.is_valid(raise_exception=True) |
| 3014 | |
| 3015 | queryset = self.get_queryset() |
| 3016 | |
| 3017 | if queryset.filter(user=request.user).exists(): |
| 3018 | return drf.response.Response( |
| 3019 | {"detail": "You already ask to access to this document."}, |
| 3020 | status=drf.status.HTTP_400_BAD_REQUEST, |
| 3021 | ) |
| 3022 | |
| 3023 | ask_for_access = models.DocumentAskForAccess.objects.create( |
| 3024 | document=document, |
| 3025 | user=request.user, |
| 3026 | role=serializer.validated_data["role"], |
| 3027 | ) |
| 3028 | |
| 3029 | send_ask_for_access_mail.delay(ask_for_access.id) |
| 3030 | |
| 3031 | return drf.response.Response(status=drf.status.HTTP_201_CREATED) |
| 3032 | |
| 3033 | @drf.decorators.action(detail=True, methods=["post"]) |
| 3034 | def accept(self, request, *args, **kwargs): |