views.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # coding=utf-8
  2. import json
  3. from rest_framework.decorators import action
  4. from django.db import transaction
  5. from utils.permission import IsAdministrator
  6. from utils.custom_modelviewset import CustomModelViewSet
  7. from apps.coupon.models import Coupon, CouponItem
  8. from apps.coupon.filters import CouponFilter, CouponItemFilter
  9. from .serializers import CouponSerializer, CouponItemSerializer
  10. from utils.exceptions import CustomError
  11. from utils import response_ok
  12. from apps.system.models import SysLog
  13. class CouponViewSet(CustomModelViewSet):
  14. permission_classes = [IsAdministrator, ]
  15. queryset = Coupon.objects.filter(delete=False)
  16. serializer_class = CouponSerializer
  17. def filter_queryset(self, queryset):
  18. queryset = queryset.filter(tenant=self.request.user.employee.tenant)
  19. f = CouponFilter(self.request.GET, queryset=queryset)
  20. return f.qs
  21. def perform_create(self, serializer):
  22. super(CouponViewSet, self).perform_create(serializer)
  23. instance = serializer.instance
  24. validated_data = serializer.validated_data
  25. tenant_log(self.request.user.employee, BizLog.INSERT, u'添加优惠券[%s],id=%d' % (instance.name, instance.id), validated_data)
  26. def perform_update(self, serializer):
  27. super(CouponViewSet, self).perform_update(serializer)
  28. instance = serializer.instance
  29. validated_data = serializer.validated_data
  30. tenant_log(self.request.user.employee, BizLog.UPDATE, u'修改优惠券[%s],id=%d' % (instance.name, instance.id), validated_data)
  31. def destroy(self, request, *args, **kwargs):
  32. with transaction.atomic():
  33. instance = self.get_object()
  34. if instance.tenant != request.user.employee.tenant:
  35. raise CustomError(u'禁止跨租户操作!')
  36. instance.delete = True
  37. instance.save()
  38. tenant_log(self.request.user.employee, BizLog.DELETE, u'删除优惠券[%s],id=%d' % (instance.name, instance.id))
  39. return response_ok()