serializers.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. # coding=utf-8
  2. from rest_framework import serializers
  3. from apps.WechatApplet.models import WechatApplet
  4. from .models import *
  5. class DeviceSerializer(serializers.ModelSerializer):
  6. create_user_text = serializers.CharField(source='create_user.employee.name', read_only=True)
  7. status_text = serializers.CharField(source='get_status_display', read_only=True)
  8. repaire_user_text = serializers.SerializerMethodField()
  9. def get_repaire_user_text(self, obj):
  10. if obj.status == DeviceModel.FINE:
  11. return ''
  12. from apps.tenant.repair_order.models import RepairOrder
  13. order = RepairOrder.objects.filter(device=obj, status__in=[RepairOrder.DISPATCH,RepairOrder.HANG_UP,
  14. RepairOrder.TURN_EMPLOYEE,RepairOrder.CANCEL_HANG_UP,]).first()
  15. if order:
  16. return order.repair_users.get_name()
  17. else:
  18. return ''
  19. class Meta:
  20. model = DeviceModel
  21. fields = '__all__'
  22. def create(self, validated_data):
  23. validated_data['create_user'] = self.context['request'].user
  24. validated_data['tenant'] = self.context['request'].user.employee.tenant
  25. instance = super(DeviceSerializer, self).create(validated_data)
  26. id = instance.id
  27. applet = WechatApplet.objects.filter(authorizer_appid=settings.WEAPP['appid']).first()
  28. filename = applet.getDeviceCode(id, instance.tenant.company_no)
  29. instance.wxapp_img = "{0}{1}".format(settings.MEDIA_URL,filename)
  30. instance.save()
  31. return instance