base.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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('account-reset-password', request=request),
  23. },
  24. 'logout': reverse('logout', request=request),
  25. 'tokens': reverse('token-list', request=request),
  26. 'domains': reverse('domain-list', request=request),
  27. }
  28. else:
  29. routes = {
  30. 'register': reverse('register', request=request),
  31. 'login': reverse('login', request=request),
  32. 'reset-password': reverse('account-reset-password', request=request),
  33. }
  34. return Response(routes)