在需要的list接口增加动态字段

This commit is contained in:
caoqianming 2022-01-26 11:06:23 +08:00
parent a2c025cdf2
commit 0955a208cf
11 changed files with 47 additions and 10 deletions

View File

@ -0,0 +1,24 @@
from django_filters import rest_framework as filters
from apps.em.models import Equipment
from datetime import *
from utils.mixins import DynamicFieldsFilterMixin
class EquipFilterSet(DynamicFieldsFilterMixin, filters.FilterSet):
tag = filters.CharFilter(method='filter_tag')
class Meta:
model = Equipment
fields = ['keeper', 'type', 'tag']
def filter_tag(self, queryset, name, value):
now = datetime.now()
day7_after = now + timedelta(days=7)
if value == 'near_check':
queryset = queryset.filter(
next_check_date__lte = datetime.date(day7_after))
elif value == 'out_check':
queryset = queryset.filter(
next_check_date__gt = datetime.date(now))
return queryset

View File

@ -2,11 +2,13 @@ from apps.mtm.models import Step
from rest_framework import serializers
from rest_framework.serializers import ModelSerializer
from rest_framework import exceptions
from utils.mixins import DynamicFieldsSerializerMixin
from .models import Equipment, ECheckRecord
from apps.system.serializers import OrganizationSimpleSerializer, UserSimpleSerializer
class EquipmentListSerializer(ModelSerializer):
class EquipmentListSerializer(DynamicFieldsSerializerMixin, ModelSerializer):
keeper_ = UserSimpleSerializer(source='keeper', read_only=True)
step_ = serializers.SerializerMethodField()
class Meta:

View File

@ -7,6 +7,7 @@ from rest_framework.viewsets import ModelViewSet, GenericViewSet
from rest_framework.mixins import CreateModelMixin, RetrieveModelMixin, ListModelMixin, DestroyModelMixin
from rest_framework import serializers, status
from rest_framework.response import Response
from apps.em.filters import EquipFilterSet
from apps.em.models import Equipment, ECheckRecord
from apps.em.serializers import DaqCreateSerializer, EChcekRecordCreateSerializer, ECheckRecordListSerializer, \
EquipmentCreateUpdateSerializer, EquipmentListSerializer
@ -26,7 +27,7 @@ class EquipmentViewSet(CreateUpdateModelAMixin, OptimizationMixin, ModelViewSet)
queryset = Equipment.objects.all()
serializer_class = EquipmentListSerializer
search_fields = ['number', 'name','description']
filterset_fields = ['keeper', 'type']
filterset_class = EquipFilterSet
ordering_fields = ['create_time']
ordering = ['-create_time']

View File

@ -5,7 +5,7 @@ from .models import IProduct, MaterialBatch
from django.utils import timezone
from utils.mixins import DynamicFieldsFilterMixin
class MbFilterSet(filters.FilterSet):
class MbFilterSet(DynamicFieldsFilterMixin, filters.FilterSet):
material = filters.ModelMultipleChoiceFilter(field_name="material", queryset=Material.objects.all())
tag = filters.CharFilter(method="filter_tag")

View File

@ -42,7 +42,7 @@ class InventorySerializer(serializers.ModelSerializer):
fields = '__all__'
class MaterialBatchSerializer(serializers.ModelSerializer):
class MaterialBatchSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer):
material_ = MaterialSimpleSerializer(source='material', read_only=True)
warehouse_ = WareHouseSimpleSerializer(source='warehouse', read_only=True)

View File

@ -1,6 +1,7 @@
from django.db.models.expressions import F
from django_filters import rest_framework as filters
from apps.mtm.models import Material, TechDoc
from utils.mixins import DynamicFieldsFilterMixin
@ -15,7 +16,7 @@ class TechDocFilterset(filters.FilterSet):
def filter_operation(self, queryset, name, value):
return queryset.filter(subproduction__subplan_subprod__ow_subplan__operation=value).distinct()
class MaterialFilterSet(filters.FilterSet):
class MaterialFilterSet(DynamicFieldsFilterMixin, filters.FilterSet):
tag = filters.CharFilter(method='filter_tag')
class Meta:
model = Material

View File

@ -1,11 +1,13 @@
from apps.em.serializers import EquipmentSimpleSerializer
from rest_framework import serializers
from rest_framework.exceptions import ParseError, ValidationError
from utils.mixins import DynamicFieldsSerializerMixin
from .models import Material, Process, RecordForm, RecordFormField, Step, SubprodctionMaterial, TechDoc, UsedStep, SubProduction
from apps.system.serializers import FileSimpleSerializer, OrganizationSimpleSerializer
class MaterialSerializer(serializers.ModelSerializer):
class MaterialSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer):
class Meta:
model = Material
fields = '__all__'

View File

@ -6,7 +6,9 @@ from datetime import *
from apps.wpm.services import WpmServies
from django.db.models import F
class PlanFilterSet(filters.FilterSet):
from utils.mixins import DynamicFieldsFilterMixin
class PlanFilterSet(DynamicFieldsFilterMixin, filters.FilterSet):
create_time_start = filters.DateFilter(field_name="create_time", lookup_expr='gte')
create_time_end = filters.DateFilter(field_name="create_time", lookup_expr='lte')
tag = filters.CharFilter(method='filter_tag')

View File

@ -3,6 +3,7 @@ from rest_framework import serializers
from apps.sam.serializers import OrderSerializer, OrderSimpleSerializer
from apps.mtm.serializers import MaterialSimpleSerializer, ProcessSimpleSerializer, SubProductionSimpleSerializer
from apps.system.serializers import OrganizationSimpleSerializer
from utils.mixins import DynamicFieldsSerializerMixin
class ProductionPlanCreateFromOrderSerializer(serializers.ModelSerializer):
@ -10,7 +11,7 @@ class ProductionPlanCreateFromOrderSerializer(serializers.ModelSerializer):
model = ProductionPlan
fields = ['order', 'count', 'start_date', 'end_date']
class ProductionPlanSerializer(serializers.ModelSerializer):
class ProductionPlanSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer):
order_ = OrderSimpleSerializer(source='order', read_only=True)
product_ = MaterialSimpleSerializer(source='product', read_only=True)
class Meta:

View File

@ -4,8 +4,10 @@ from apps.sam.models import Order
from django.db.models import F
from datetime import datetime, timedelta
from utils.mixins import DynamicFieldsFilterMixin
class OrderFilterSet(filters.FilterSet):
class OrderFilterSet(DynamicFieldsFilterMixin, filters.FilterSet):
create_time_start = filters.DateFilter(field_name="create_time", lookup_expr='gte')
create_time_end = filters.DateFilter(field_name="create_time", lookup_expr='lte')
material = filters.NumberFilter(method='filter_material')

View File

@ -1,6 +1,8 @@
from rest_framework import serializers
from utils.mixins import DynamicFieldsSerializerMixin
from .models import Contract, Customer, Order
from apps.mtm.serializers import MaterialSimpleSerializer
@ -47,7 +49,7 @@ class OrderCreateUpdateSerializer(serializers.ModelSerializer):
validated_data['number'] = 'DD' + ranstr(7)
return super().create(validated_data)
class OrderSerializer(serializers.ModelSerializer):
class OrderSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer):
contract_ = ContractSimpleSerializer(source='contract', read_only=True)
customer_ = CustomerSimpleSerializer(source='customer', read_only=True)
product_ = MaterialSimpleSerializer(source='product', read_only=True)