views.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from utils.custom_modelviewset import CustomModelViewSet
  2. from rest_framework.views import APIView
  3. from .models import Option
  4. from .serializers import OptionSerializer
  5. from .filters import OptionFilter
  6. from apps.log.models import BizLog
  7. from utils import response_ok
  8. from utils.permission import isLogin, permission_required
  9. class DictView(APIView):
  10. permission_classes = [isLogin, ]
  11. def get(self, request):
  12. ret = {
  13. 'types':Option.TYPE_CHOICES,
  14. }
  15. return response_ok(ret)
  16. class GetOptionView(APIView):
  17. permission_classes = [isLogin, ]
  18. def get(self, request):
  19. types = request.GET.get('types')
  20. rows = Option.objects.filter(type=types, enable=True).order_by('sort').values('id','name')
  21. # data = OptionSerializer(queryset, many=True).data
  22. # for row in rows
  23. data = [{'value':row['id'],'label':row['name']} for row in rows]
  24. return response_ok(data)
  25. class OptionViewSet(CustomModelViewSet):
  26. queryset = Option.objects.filter()
  27. serializer_class = OptionSerializer
  28. @permission_required('option.browse_option')
  29. def filter_queryset(self, queryset):
  30. queryset = queryset.filter()
  31. f = OptionFilter(self.request.GET, queryset=queryset)
  32. return f.qs
  33. @permission_required('option.add_option')
  34. def perform_create(self, serializer):
  35. super(OptionViewSet,self).perform_create(serializer)
  36. instance = serializer.instance
  37. validated_data = serializer.validated_data
  38. BizLog.objects.addnew(self.request.user, BizLog.INSERT,
  39. u'添加自定义项[%s],id=%d' % (instance.name, instance.id), validated_data)
  40. @permission_required('option.add_option')
  41. def perform_update(self, serializer):
  42. super(OptionViewSet,self).perform_update(serializer)
  43. instance = serializer.instance
  44. validated_data = serializer.validated_data
  45. BizLog.objects.addnew(self.request.user, BizLog.UPDATE,
  46. u'修改自定义项[%s],id=%d' % (instance.name, instance.id), validated_data)