custom_modelviewset.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # coding=utf-8
  2. from rest_framework.viewsets import ModelViewSet
  3. from utils import response_error, response_ok
  4. from utils.exceptions import CustomError
  5. from rest_framework.permissions import IsAuthenticated
  6. from django.db import transaction
  7. class CustomModelViewSet(ModelViewSet):
  8. permission_classes = [IsAuthenticated, ]
  9. def create(self, request, *args, **kwargs):
  10. try:
  11. with transaction.atomic():
  12. super(CustomModelViewSet, self).create(request, *args, **kwargs)
  13. except CustomError as e:
  14. return response_error(e.get_error_msg())
  15. except Exception as e:
  16. return response_error(str(e))
  17. return response_ok()
  18. def update(self, request, *args, **kwargs):
  19. try:
  20. with transaction.atomic():
  21. super(CustomModelViewSet, self).update(request, *args, **kwargs)
  22. except CustomError as e:
  23. return response_error(e.get_error_msg())
  24. except Exception as e:
  25. return response_error(str(e))
  26. return response_ok()
  27. def destroy(self, request, *args, **kwargs):
  28. try:
  29. with transaction.atomic():
  30. super(CustomModelViewSet, self).destroy(request, *args, **kwargs)
  31. except CustomError as e:
  32. return response_error(e.get_error_msg())
  33. except Exception as e:
  34. return response_error(str(e))
  35. return response_ok()