views.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from utils.custom_modelviewset import CustomModelViewSet
  2. from utils.permission import IsTenantUser, permission_required
  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 = [IsTenantUser,]
  20. queryset = Option.objects.filter(delete=False)
  21. serializer_class = OptionSerializer
  22. @permission_required('option.browse_option')
  23. def filter_queryset(self, queryset):
  24. queryset = queryset.filter(tenant=self.request.user.employee.tenant)
  25. f = OptionFilter(self.request.GET, queryset=queryset)
  26. return f.qs
  27. @permission_required('option.add_option')
  28. def perform_create(self, serializer):
  29. super(OptionViewSet,self).perform_create(serializer)
  30. instance = serializer.instance
  31. validated_data = serializer.validated_data
  32. tenant_log(self.request.user.employee, BizLog.INSERT, u'添加系统选项[%s],id=%d' % (instance.name, instance.id), validated_data)
  33. @permission_required('option.add_option')
  34. def perform_update(self, serializer):
  35. super(OptionViewSet,self).perform_update(serializer)
  36. instance = serializer.instance
  37. validated_data = serializer.validated_data
  38. tenant_log(self.request.user.employee, BizLog.INSERT, u'修改系统选项[%s],id=%d' % (instance.name, instance.id), validated_data)
  39. @permission_required('option.delete_option')
  40. def destroy(self, request, *args, **kwargs):
  41. with transaction.atomic():
  42. instance = self.get_object()
  43. instance.delete = True
  44. instance.save()
  45. tenant_log(self.request.user.employee, BizLog.DELETE, u'删除系统选项[%s],id=%d' % (instance.name, instance.id))
  46. return response_ok()