api.py 1011 B

12345678910111213141516171819202122232425262728
  1. from django.contrib.auth import logout
  2. from django.core.exceptions import PermissionDenied
  3. from django.shortcuts import get_object_or_404
  4. from django.utils.translation import gettext as _
  5. from rest_framework.decorators import api_view
  6. from rest_framework.response import Response
  7. from .models import Agreement
  8. from .utils import save_user_agreement_acceptance
  9. @api_view(["POST"])
  10. def submit_agreement(request, pk):
  11. agreement = get_object_or_404(Agreement, is_active=True, pk=pk)
  12. if agreement.id in request.user.agreements:
  13. raise PermissionDenied(_("You have already accepted this agreement."))
  14. if request.data.get("accept") is True:
  15. save_user_agreement_acceptance(request.user, agreement, commit=True)
  16. elif request.data.get("accept") is False:
  17. if not request.user.is_staff:
  18. request.user.mark_for_delete()
  19. logout(request)
  20. else:
  21. raise PermissionDenied(_("You need to submit a valid choice."))
  22. return Response({"detail": "ok"})