views.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from utils.custom_modelviewset import CustomModelViewSet
  2. from utils.permission import IsTenantUser, IsAdministratorUser
  3. from rest_framework.views import APIView
  4. from .models import Option
  5. from .serializers import OptionSerializer
  6. from .filters import OptionFilter
  7. from apps.tenant import tenant_log
  8. from apps.log.models import BizLog
  9. from django.db import transaction
  10. from utils import response_ok
  11. class DictView(APIView):
  12. permission_classes = [IsTenantUser, ]
  13. def get(self, request):
  14. ret = {
  15. 'types':Option.TYPE_CHOICES,
  16. }
  17. return response_ok(ret)
  18. class OptionViewSet(CustomModelViewSet):
  19. permission_classes = [IsAdministratorUser,]
  20. queryset = Option.objects.filter(delete=False)
  21. serializer_class = OptionSerializer
  22. def filter_queryset(self, queryset):
  23. queryset = queryset.filter(tenant=self.request.user.employee.tenant)
  24. f = OptionFilter(self.request.GET, queryset=queryset)
  25. return f.qs
  26. def perform_create(self, serializer):
  27. super(OptionViewSet,self).perform_create(serializer)
  28. instance = serializer.instance
  29. validated_data = serializer.validated_data
  30. tenant_log(self.request.user.employee, BizLog.INSERT, u'添加系统选项[%s],id=%d' % (instance.name, instance.id), validated_data)
  31. def perform_update(self, serializer):
  32. super(OptionViewSet,self).perform_update(serializer)
  33. instance = serializer.instance
  34. validated_data = serializer.validated_data
  35. tenant_log(self.request.user.employee, BizLog.INSERT, u'修改系统选项[%s],id=%d' % (instance.name, instance.id), validated_data)
  36. def destroy(self, request, *args, **kwargs):
  37. with transaction.atomic():
  38. instance = self.get_object()
  39. instance.delete = True
  40. instance.save()
  41. tenant_log(self.request.user.employee, BizLog.DELETE, u'删除系统选项[%s],id=%d' % (instance.name, instance.id))
  42. return response_ok()