from rest_framework import serializers from apps.am.models import Area from apps.hrm.serializers import EmployeeBaseSerializer, EmployeeSimpleSerializer from apps.third.models import BltBind, TDevice, Tlog from apps.utils.serializers import CustomModelSerializer from django.db import transaction class PicSerializer(serializers.Serializer): path = serializers.CharField(label='图片oss地址') class TDeviceSerializer(CustomModelSerializer): employee_ = EmployeeSimpleSerializer(source='employee', read_only=True) area_name = serializers.CharField(source='area.name', read_only=True) class Meta: model = TDevice fields = '__all__' class TDeviceUpdateSerializer(CustomModelSerializer): class Meta: model = TDevice fields = ['is_clock', 'door_auth_list'] class TDeviceSimpleSerializer(CustomModelSerializer): class Meta: model = TDevice fields = ['id', 'name', 'code'] class RequestCommonSerializer(serializers.Serializer): method_choice = ( ('post', 'post'), ('get', 'get'), ('put', 'put'), ('delete', 'delete') ) url = serializers.CharField(label='请求地址', required=False) method = serializers.ChoiceField(label='请求方法', choices=method_choice, required=False) params = serializers.JSONField(label='请求参数', required=False, allow_null=True) json = serializers.JSONField(label='请求body(json格式)', required=False, allow_null=True) code = serializers.CharField(label='请求短标识', required=False, allow_null=True) class BindAreaSerializer(serializers.Serializer): codes = serializers.ListField(child=serializers.CharField(), label='标识列表') area = serializers.PrimaryKeyRelatedField(queryset=Area.objects.all(), label="区域ID") class LabelLocationSerializer(CustomModelSerializer): code = serializers.CharField(label='设备唯一标识') class Meta: model = TDevice fields = ['type', 'location', 'area', 'areas', 'name', 'code'] class BindAreasSerializer(serializers.Serializer): type = serializers.CharField(label='设备类型') codes = serializers.ListField(child=serializers.CharField(), label='标识列表') areas = serializers.PrimaryKeyRelatedField(queryset=Area.objects.all(), label="区域ID列表", required=False, many=True) class TlogSerializer(CustomModelSerializer): class Meta: model = Tlog fields = '__all__' class BltSerializer(serializers.ModelSerializer): employee_ = EmployeeSimpleSerializer(source='employee', read_only=True) class Meta: model = TDevice fields = ['code', 'obj_cate', 'employee', 'employee_', 'id'] class BltQuerySerializer(serializers.ModelSerializer): class Meta: model = TDevice fields = ['area'] class BltBindCreateSerializer(serializers.ModelSerializer): blt = serializers.PrimaryKeyRelatedField(queryset=TDevice.objects.filter(type=TDevice.DEVICE_BLT)) class Meta: model = BltBind fields = ['type', 'blt', 'employee'] class BltCreatesSerializer(serializers.Serializer): macs = serializers.ListField(child=serializers.CharField(), label='标签mac列表')