orders_local.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from django.shortcuts import get_object_or_404
  2. from rest_framework import viewsets, permissions
  3. from rest_framework.response import Response
  4. from webservice_running.models import OrdersLocal
  5. from webservice_running.serializer import OrdersLocalSerializer
  6. # from dbsynce.models import Orders, Service, ServiceType, Provider, Client
  7. # from sharix_admin.models import SharixUser
  8. # from tickets.models import Task
  9. # from tickets.serializer import TaskSerializer
  10. class OrdersLocalMVS(viewsets.ModelViewSet):
  11. queryset = OrdersLocal.objects.all()
  12. serializer_class = OrdersLocalSerializer
  13. # permission_classes = [IsOwnerOrReadOnly]
  14. permission_classes = [permissions.IsAuthenticated]
  15. def get_object(self):
  16. """
  17. Returns the object the view is displaying.
  18. You may want to override this if you need to provide non-standard
  19. queryset lookups. Eg if objects are referenced using multiple
  20. keyword arguments in the url conf.
  21. """
  22. # queryset = self.filter_queryset(self.get_queryset())
  23. queryset = OrdersLocal.objects.select_related('order_synced__ticket')
  24. # Perform the lookup filtering.
  25. lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field
  26. assert lookup_url_kwarg in self.kwargs, (
  27. 'Expected view %s to be called with a URL keyword argument '
  28. 'named "%s". Fix your URL conf, or set the `.lookup_field` '
  29. 'attribute on the view correctly.' %
  30. (self.__class__.__name__, lookup_url_kwarg)
  31. )
  32. filter_kwargs = {self.lookup_field: self.kwargs[lookup_url_kwarg]}
  33. obj = get_object_or_404(queryset, **filter_kwargs)
  34. # May raise a permission denied
  35. self.check_object_permissions(self.request, obj)
  36. return obj
  37. def update(self, request, *args, **kwargs):
  38. partial = kwargs.pop('partial', False)
  39. instance = self.get_object() # OrdersLocal.objects.select_related('order_synced__ticket').get(id=1)
  40. serializer = self.get_serializer(instance, data=request.data, partial=partial)
  41. # for serializer in serializers:
  42. serializer.is_valid(raise_exception=True)
  43. self.perform_update(serializer)
  44. if getattr(instance, '_prefetched_objects_cache', None):
  45. # If 'prefetch_related' has been applied to a queryset, we need to
  46. # forcibly invalidate the prefetch cache on the instance.
  47. instance._prefetched_objects_cache = {}
  48. return Response(serializer.data)