75 lines
2.4 KiB
Python
75 lines
2.4 KiB
Python
from apps.utils.serializers import CustomModelSerializer
|
|
from apps.utils.constants import EXCLUDE_FIELDS_BASE, EXCLUDE_FIELDS_DEPT
|
|
from .models import Drain, DrainEquip, EnvData, VehicleAccess
|
|
from apps.em.serializers import EquipmentSerializer
|
|
from rest_framework import serializers
|
|
from django.utils import timezone
|
|
|
|
|
|
class DrainSerializer(CustomModelSerializer):
|
|
"""Serializer for Drain model"""
|
|
|
|
class Meta:
|
|
model = Drain
|
|
fields = "__all__"
|
|
read_only_fields = EXCLUDE_FIELDS_DEPT
|
|
|
|
def validate(self, attrs):
|
|
attrs['belong_dept'] = attrs['mgroup'].belong_dept
|
|
return super().validate(attrs)
|
|
|
|
|
|
class DrainEquipSerializer(CustomModelSerializer):
|
|
equipment_type = serializers.CharField(
|
|
source='equipment.type', read_only=True)
|
|
equipment_name = serializers.CharField(
|
|
source='equipment.name', read_only=True)
|
|
|
|
class Meta:
|
|
model = DrainEquip
|
|
fields = "__all__"
|
|
read_only_fields = EXCLUDE_FIELDS_BASE
|
|
|
|
|
|
class EnvDataSerializer(CustomModelSerializer):
|
|
"""Serializer for EnvData model"""
|
|
|
|
class Meta:
|
|
model = EnvData
|
|
fields = "__all__"
|
|
|
|
|
|
class DrainEquipEnvSerializer(CustomModelSerializer):
|
|
equipment_number = serializers.CharField(
|
|
source='equipment.number', read_only=True)
|
|
equipment_type = serializers.CharField(
|
|
source='equipment.type', read_only=True)
|
|
equipment_name = serializers.CharField(
|
|
source='equipment.name', read_only=True)
|
|
equipment_envdata = serializers.SerializerMethodField()
|
|
equipment_ = EquipmentSerializer(source='equipment', read_only=True)
|
|
# drain_ = DrainSerializer(source='drain', read_only=True)
|
|
|
|
def get_equipment_envdata(self, obj):
|
|
now = timezone.now()
|
|
now_10_before = now - timezone.timedelta(minutes=10)
|
|
obj = EnvData.objects.filter(
|
|
equipment=obj.equipment, time__gte=now_10_before, time__lte=now).order_by('-time').first()
|
|
if obj:
|
|
return EnvDataSerializer(instance=obj).data
|
|
else:
|
|
return {}
|
|
|
|
class Meta:
|
|
model = DrainEquip
|
|
fields = ['id', 'equipment', 'equipment_type',
|
|
'equipment_name', 'equipment_envdata', 'equipment_number', 'equipment_']
|
|
|
|
|
|
class VehicleAccessSerializer(CustomModelSerializer):
|
|
"""Serializer for VehicleAccess model"""
|
|
class Meta:
|
|
model = VehicleAccess
|
|
fields = "__all__"
|
|
read_only_fields = EXCLUDE_FIELDS_BASE
|