hberp/hb_server/apps/sam/serializers.py

67 lines
2.3 KiB
Python

from rest_framework import serializers
from utils.mixins import DynamicFieldsSerializerMixin
from .models import Contract, Customer, Order
from apps.mtm.serializers import MaterialSimpleSerializer
from utils.tools import ranstr
class CustomerSerializer(serializers.ModelSerializer):
class Meta:
model = Customer
fields = '__all__'
class CustomerCreateUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = Customer
fields = ['name', 'address', 'contact', 'contact_phone', 'description']
class CustomerSimpleSerializer(serializers.ModelSerializer):
class Meta:
model = Customer
fields = ['id', 'name', 'address', 'contact', 'contact_phone']
class ContractSerializer(serializers.ModelSerializer):
customer_ = CustomerSimpleSerializer(source='customer', read_only=True)
class Meta:
model = Contract
fields = '__all__'
class ContractSimpleSerializer(serializers.ModelSerializer):
class Meta:
model = Contract
fields = ['id', 'name', 'number', 'watch_num']
class ContractCreateUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = Contract
fields = ['name', 'number', 'amount', 'customer', 'sign_date', 'description', 'invoice', 'watch_num']
class OrderCreateUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = Order
fields = ['customer', 'contract', 'product', 'count', 'delivery_date', 'need_mtest']
def create(self, validated_data):
validated_data['number'] = 'DD' + ranstr(7)
return super().create(validated_data)
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)
class Meta:
model = Order
fields = '__all__'
class OrderSimpleSerializer(serializers.ModelSerializer):
contract_ = ContractSimpleSerializer(source='contract', read_only=True)
customer_ = CustomerSimpleSerializer(source='customer', read_only=True)
class Meta:
model = Order
fields = ['id', 'number', 'contract_', 'customer_', 'need_mtest', 'delivery_date']