views.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. # coding=utf-8
  2. from django.db import transaction
  3. from rest_framework.views import APIView
  4. from utils import response_ok
  5. from utils.custom_modelviewset import CustomModelViewSet
  6. from utils.permission import IsTenantUser, permission_required
  7. from .models import Equipment
  8. from .serializers import EquipmentSerializer
  9. from .filters import EquipmentFilter
  10. from apps.tenant import tenant_log
  11. from apps.log.models import BizLog
  12. from utils.exceptions import CustomError
  13. from apps.tenant.option.serializers import OptionSerializer,Option
  14. class DictView(APIView):
  15. permission_classes = [IsTenantUser, ]
  16. def get(self, request):
  17. tenant=request.user.employee.tenant
  18. ret = {
  19. 'types': OptionSerializer(Option.objects.filter(delete=False,type=Option.EQUIPMENT_TYPE, enable=True, tenant=tenant), many=True).data,
  20. 'suppliers': OptionSerializer(Option.objects.filter(delete=False,type=Option.EQUIPMENT_SUPPLIER, enable=True, tenant=tenant), many=True).data,
  21. }
  22. return response_ok(ret)
  23. class EquipmentViewSet(CustomModelViewSet):
  24. permission_classes = [IsTenantUser, ]
  25. queryset = Equipment.objects.all()
  26. serializer_class = EquipmentSerializer
  27. @permission_required('equipment.browse_equipment')
  28. def filter_queryset(self, queryset):
  29. queryset = queryset.filter(type__tenant=self.request.user.employee.tenant)
  30. f = EquipmentFilter(self.request.GET, queryset=queryset)
  31. return f.qs
  32. @permission_required('equipment.add_equipment')
  33. def perform_create(self, serializer):
  34. super(EquipmentViewSet, self).perform_create(serializer)
  35. instance = serializer.instance
  36. validated_data = serializer.validated_data
  37. tenant_log(self.request.user.employee, BizLog.INSERT, u'添加设备[%s],id=%d' % (instance.name, instance.id),
  38. validated_data)
  39. @permission_required('equipment.add_equipment')
  40. def perform_update(self, serializer):
  41. super(EquipmentViewSet, self).perform_update(serializer)
  42. instance = serializer.instance
  43. validated_data = serializer.validated_data
  44. tenant_log(self.request.user.employee, BizLog.UPDATE, u'修改设备[%s],id=%d' % (instance.name, instance.id),
  45. validated_data)
  46. @permission_required('equipment.delete_equipment')
  47. def destroy(self, request, *args, **kwargs):
  48. with transaction.atomic():
  49. with transaction.atomic():
  50. instance = self.get_object()
  51. if instance.type.tenant != request.user.employee.tenant:
  52. raise CustomError(u'禁止跨租户操作!')
  53. super(EquipmentViewSet, self).destroy(self, request, *args, **kwargs)
  54. tenant_log(self.request.user.employee, BizLog.DELETE, u'删除设备[%s],id=%d' % (instance.name, instance.id))
  55. return response_ok()