generics.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. from __future__ import unicode_literals, print_function
  2. from rest_framework import mixins
  3. from rest_framework.generics import GenericAPIView
  4. from rest_framework.viewsets import ModelViewSet
  5. from . import mixins as bulk_mixins
  6. __all__ = [
  7. 'BulkCreateAPIView',
  8. 'BulkDestroyAPIView',
  9. 'BulkModelViewSet',
  10. 'BulkUpdateAPIView',
  11. 'ListBulkCreateAPIView',
  12. 'ListBulkCreateUpdateAPIView',
  13. 'ListBulkCreateUpdateDestroyAPIView',
  14. 'ListCreateBulkUpdateAPIView',
  15. 'ListCreateBulkUpdateDestroyAPIView',
  16. ]
  17. # ################################################## #
  18. # Concrete view classes that provide method handlers #
  19. # by composing the mixin classes with the base view. #
  20. # ################################################## #
  21. class BulkCreateAPIView(bulk_mixins.BulkCreateModelMixin,
  22. GenericAPIView):
  23. def post(self, request, *args, **kwargs):
  24. return self.create(request, *args, **kwargs)
  25. class BulkUpdateAPIView(bulk_mixins.BulkUpdateModelMixin,
  26. GenericAPIView):
  27. def put(self, request, *args, **kwargs):
  28. return self.bulk_update(request, *args, **kwargs)
  29. def patch(self, request, *args, **kwargs):
  30. return self.partial_bulk_update(request, *args, **kwargs)
  31. class BulkDestroyAPIView(bulk_mixins.BulkDestroyModelMixin,
  32. GenericAPIView):
  33. def delete(self, request, *args, **kwargs):
  34. return self.bulk_destroy(request, *args, **kwargs)
  35. class ListBulkCreateAPIView(mixins.ListModelMixin,
  36. bulk_mixins.BulkCreateModelMixin,
  37. GenericAPIView):
  38. def get(self, request, *args, **kwargs):
  39. return self.list(request, *args, **kwargs)
  40. def post(self, request, *args, **kwargs):
  41. return self.create(request, *args, **kwargs)
  42. class ListCreateBulkUpdateAPIView(mixins.ListModelMixin,
  43. mixins.CreateModelMixin,
  44. bulk_mixins.BulkUpdateModelMixin,
  45. GenericAPIView):
  46. def get(self, request, *args, **kwargs):
  47. return self.list(request, *args, **kwargs)
  48. def post(self, request, *args, **kwargs):
  49. return self.create(request, *args, **kwargs)
  50. def put(self, request, *args, **kwargs):
  51. return self.bulk_update(request, *args, **kwargs)
  52. def patch(self, request, *args, **kwargs):
  53. return self.partial_bulk_update(request, *args, **kwargs)
  54. class ListCreateBulkUpdateDestroyAPIView(mixins.ListModelMixin,
  55. mixins.CreateModelMixin,
  56. bulk_mixins.BulkUpdateModelMixin,
  57. bulk_mixins.BulkDestroyModelMixin,
  58. GenericAPIView):
  59. def get(self, request, *args, **kwargs):
  60. return self.list(request, *args, **kwargs)
  61. def post(self, request, *args, **kwargs):
  62. return self.create(request, *args, **kwargs)
  63. def put(self, request, *args, **kwargs):
  64. return self.bulk_update(request, *args, **kwargs)
  65. def patch(self, request, *args, **kwargs):
  66. return self.partial_bulk_update(request, *args, **kwargs)
  67. def delete(self, request, *args, **kwargs):
  68. return self.bulk_destroy(request, *args, **kwargs)
  69. class ListBulkCreateUpdateAPIView(mixins.ListModelMixin,
  70. bulk_mixins.BulkCreateModelMixin,
  71. bulk_mixins.BulkUpdateModelMixin,
  72. GenericAPIView):
  73. def get(self, request, *args, **kwargs):
  74. return self.list(request, *args, **kwargs)
  75. def post(self, request, *args, **kwargs):
  76. return self.create(request, *args, **kwargs)
  77. def put(self, request, *args, **kwargs):
  78. return self.bulk_update(request, *args, **kwargs)
  79. def patch(self, request, *args, **kwargs):
  80. return self.partial_bulk_update(request, *args, **kwargs)
  81. class ListBulkCreateUpdateDestroyAPIView(mixins.ListModelMixin,
  82. bulk_mixins.BulkCreateModelMixin,
  83. bulk_mixins.BulkUpdateModelMixin,
  84. bulk_mixins.BulkDestroyModelMixin,
  85. GenericAPIView):
  86. def get(self, request, *args, **kwargs):
  87. return self.list(request, *args, **kwargs)
  88. def post(self, request, *args, **kwargs):
  89. return self.create(request, *args, **kwargs)
  90. def put(self, request, *args, **kwargs):
  91. return self.bulk_update(request, *args, **kwargs)
  92. def patch(self, request, *args, **kwargs):
  93. return self.partial_bulk_update(request, *args, **kwargs)
  94. def delete(self, request, *args, **kwargs):
  95. return self.bulk_destroy(request, *args, **kwargs)
  96. # ########################################################## #
  97. # Concrete viewset classes that provide method handlers #
  98. # by composing the bulk mixin classes with the base viewset. #
  99. # ########################################################## #
  100. class BulkModelViewSet(bulk_mixins.BulkCreateModelMixin,
  101. bulk_mixins.BulkUpdateModelMixin,
  102. bulk_mixins.BulkDestroyModelMixin,
  103. ModelViewSet):
  104. pass