views.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. # coding=utf-8
  2. from django.db import transaction
  3. from rest_framework.decorators import action
  4. from utils import response_ok
  5. from utils.custom_modelviewset import CustomModelViewSet
  6. from apps.foundation.models import BizLog
  7. from apps.account import tenant_log
  8. from .filters import *
  9. from .serializers import *
  10. from .models import *
  11. class ProductOrderViewSet(CustomModelViewSet):
  12. queryset = ProductOrder.objects.filter(delete=False)
  13. serializer_class = ProductOrderSerializer
  14. def filter_queryset(self, queryset):
  15. f = ProductOrderFilter(self.request.GET, queryset=queryset)
  16. return f.qs
  17. @action(methods=['post'], detail=True)
  18. def finish(self, request, pk):
  19. order = ProductOrder.objects.filter(id=pk).first()
  20. with transaction.atomic():
  21. if order.status == ProductOrder.WAIT_PAY:
  22. raise CustomError(u'订单未支付!')
  23. if order.status == ProductOrder.FINISHED:
  24. raise CustomError(u'订单已完成!')
  25. order.status = ProductOrder.FINISHED
  26. order.save()
  27. tenant_log(self.request.user, BizLog.UPDATE,
  28. u'修改商品订单状态[%s],id=%d' % (ProductOrder.STATUS_CHOICES[order.status - 1][1], order.id))
  29. return response_ok()