base.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from django.http import Http404
  2. from rest_framework import status
  3. from rest_framework.response import Response
  4. from rest_framework.reverse import reverse
  5. from rest_framework.views import APIView
  6. class IdempotentDestroyMixin:
  7. def destroy(self, request, *args, **kwargs):
  8. try:
  9. # noinspection PyUnresolvedReferences
  10. super().destroy(request, *args, **kwargs)
  11. except Http404:
  12. pass
  13. return Response(status=status.HTTP_204_NO_CONTENT)
  14. class Root(APIView):
  15. def get(self, request, *args, **kwargs):
  16. if self.request.user.is_authenticated:
  17. routes = {
  18. "account": {
  19. "show": reverse("account", request=request),
  20. "delete": reverse("account-delete", request=request),
  21. "change-email": reverse("account-change-email", request=request),
  22. "reset-password": reverse(
  23. "account-reset-password", request=request
  24. ),
  25. },
  26. "logout": reverse("logout", request=request),
  27. "tokens": reverse("token-list", request=request),
  28. "domains": reverse("domain-list", request=request),
  29. }
  30. else:
  31. routes = {
  32. "register": reverse("register", request=request),
  33. "login": reverse("login", request=request),
  34. "reset-password": reverse("account-reset-password", request=request),
  35. }
  36. return Response(routes)