views.py 1.0 KB

123456789101112131415161718192021222324252627282930313233
  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 .filters import *
  7. from .serializers import *
  8. from .models import *
  9. class ProductOrderViewSet(CustomModelViewSet):
  10. queryset = ProductOrder.objects.filter(delete=False)
  11. serializer_class = ProductOrderSerializer
  12. def filter_queryset(self, queryset):
  13. f = ProductOrderFilter(self.request.GET, queryset=queryset)
  14. return f.qs
  15. @action(methods=['post'], detail=True)
  16. def finish(self, request, pk):
  17. order = ProductOrder.objects.filter(id=pk).first()
  18. with transaction.atomic():
  19. if order.status == ProductOrder.WAIT_PAY:
  20. raise CustomError(u'订单未支付!')
  21. if order.status == ProductOrder.FINISHED:
  22. raise CustomError(u'订单已完成!')
  23. order.status = ProductOrder.FINISHED
  24. order.save()
  25. return response_ok()