在需要的list接口增加动态字段
This commit is contained in:
parent
a2c025cdf2
commit
0955a208cf
|
@ -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
|
|
@ -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:
|
||||
|
|
|
@ -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']
|
||||
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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__'
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue