from rest_framework import serializers import time # import ast # from .models import Device class SearchEquipSerializer(serializers.Serializer): device_id = serializers.CharField(help_text="搜索设备号", required=True) isfullId = serializers.IntegerField(help_text="是否完整搜索固定值1", required=False) def validate_device_id(self, value): value = value.strip() if len(value) < 4: raise serializers.ValidationError("设备号长度不能小于4位") else: return value # class DeviceDetailSerializer(serializers.Serializer): # req = serializers.CharField(help_text="类型", required=True) # device_id = serializers.CharField(help_text="设备号", required=True) # start_timestamp = serializers.IntegerField(help_text="开始时间戳(秒级)", required=True) # end_timestamp = serializers.IntegerField(help_text="结束时间戳(秒级)", required=True) # page = serializers.IntegerField(help_text="页码", required=True) # page_size = serializers.IntegerField(help_text="页长", required=True) # def validate_page(self, value): # if value<1: # raise serializers.ValidationError("页码不能小于1") # return value # def validate_page_size(self, value): # if value<1: # raise serializers.ValidationError("每页数据不能小于1") # return value class DeviceDetailSerializer(serializers.Serializer): req = serializers.CharField(help_text="类型", required=True) device_id = serializers.CharField(help_text="设备号", required=True) start_timestamp = serializers.IntegerField(help_text="开始时间戳(秒级)", required=False) end_timestamp = serializers.IntegerField(help_text="结束时间戳(秒级)", required=False) page = serializers.IntegerField(help_text="页码", required=False) page_size = serializers.IntegerField(help_text="页长", required=False) def validate(self, attrs): if attrs.get("req")=="history": if not attrs.get("start_timestamp",""): raise serializers.ValidationError({"start_timestamp":"参数为必填项"}) if not attrs.get("end_timestamp",""): raise serializers.ValidationError({"end_timestamp":"参数为必填项"}) if attrs["start_timestamp"] > attrs["end_timestamp"]: raise serializers.ValidationError({"timestamp":"结束时间不能小于开始时间"}) if not attrs.get("page",""): attrs["page"] = 1 if not attrs.get("page_size",""): attrs["page_size"] = 10 elif attrs.get("req")=="new": if not attrs.get("page_size",""): attrs["page_size"] = 1 if not attrs.get("offset",""): attrs["offset"] = 0 else: raise serializers.ValidationError({"req":"参数超出阈值"}) return attrs