diff --git a/apps/enp/serializers.py b/apps/enp/serializers.py index 0a3781aa..1f95be7d 100644 --- a/apps/enp/serializers.py +++ b/apps/enp/serializers.py @@ -24,23 +24,23 @@ class DrainSerializer(CustomModelSerializer): return super().validate(attrs) -class Drain2Serializer(CustomModelSerializer): +class DrainWithEquipBaseSerializer(DrainSerializer): equip_data = serializers.SerializerMethodField() - mgroup_name = serializers.CharField(source="mgroup.name", read_only=True) - class Meta: - model = Drain - fields = "__all__" - read_only_fields = EXCLUDE_FIELDS_DEPT + def get_equip_data(self, obj): + equips = obj.equipments.all() + odata = equips.values("id", "number", "name", "type", "running_state") + return odata + +class DrainWithEquipEnpSerializer(DrainSerializer): + equip_data = serializers.SerializerMethodField() def get_equip_data(self, obj): equips = obj.equipments.all() now = datetime.now() today = str(now)[:10] + " 00:00:00" today_last = str(now)[:10] + " 23:59:59" - odata = equips.values("id", "name", "type", "running_state") - # eids = [f"'{e['id']}'" for e in odata] - # eids_str = ",".join(eids) + odata = equips.values("id", "number", "name", "type", "running_state") for i in odata: i.update( { @@ -53,11 +53,6 @@ class Drain2Serializer(CustomModelSerializer): equipment_id = i["id"] sql_str = duration_hour_one_equip.format(equipment_id=equipment_id, start_time=today, end_time=today_last) res = query_all_dict(sql_str) - # data = {} - # for i in res: - # data[i["equipment_id"]] = i - - # for i in odata: if res: i.update(res[0]) diff --git a/apps/enp/views.py b/apps/enp/views.py index 6e1384f5..afc79d5f 100644 --- a/apps/enp/views.py +++ b/apps/enp/views.py @@ -1,7 +1,9 @@ from django.shortcuts import render from apps.utils.viewsets import CustomModelViewSet, CustomGenericViewSet from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin, CustomListModelMixin -from .serializers import DrainSerializer, DrainEquipSerializer, DrainEquipEnvSerializer, VehicleAccessSerializer, EnvDataSerializer, EnvDataExportSerializer, CarWashSerializer, Drain2Serializer +from .serializers import (DrainSerializer, DrainEquipSerializer, DrainEquipEnvSerializer, + VehicleAccessSerializer, EnvDataSerializer, EnvDataExportSerializer, + CarWashSerializer, DrainWithEquipEnpSerializer, DrainWithEquipBaseSerializer) from .models import Drain, DrainEquip, VehicleAccess, EnvData, CarWash from rest_framework.decorators import action from apps.utils.sql import query_all_dict @@ -25,9 +27,12 @@ class DrainViewSet(CustomModelViewSet): select_related_fields = ["mgroup"] def get_serializer_class(self): - has_equipdata = self.request.query_params.get("has_equipdata", "no") - if self.request.method == "GET" and has_equipdata == "yes": - return Drain2Serializer + equip_data = self.request.query_params.get("equip_data", "no") + if self.request.method == "GET": + if equip_data == "base": + return DrainWithEquipEnpSerializer + elif equip_data == "enp": + return DrainWithEquipBaseSerializer return super().get_serializer_class() @swagger_auto_schema(