forked from erp-dev/erp
feat: auto complete stock change
This commit is contained in:
@@ -2,62 +2,105 @@ from rest_framework import serializers
|
||||
from basic_info import models as basic_models
|
||||
|
||||
|
||||
class ProductCategorySerializer(serializers.ModelSerializer):
|
||||
class BaseSerializer(serializers.ModelSerializer):
|
||||
merchant = serializers.PrimaryKeyRelatedField(
|
||||
queryset=basic_models.Merchant.objects.all(),
|
||||
required=False # 创建时由视图层设置
|
||||
)
|
||||
|
||||
def to_representation(self, instance):
|
||||
try:
|
||||
merchant = self.context['request'].user.employee.merchant
|
||||
if instance.merchant != merchant:
|
||||
# 数据保护手段
|
||||
raise PermissionError("无权限访问该对象")
|
||||
except (KeyError, AttributeError):
|
||||
# TODO: log something?
|
||||
raise PermissionError("无权限访问该对象")
|
||||
|
||||
result = super().to_representation(instance)
|
||||
if self.context.get('expand_merchant', False):
|
||||
result['merchant'] = {
|
||||
'id': instance.merchant.id,
|
||||
'name': instance.merchant.name
|
||||
}
|
||||
return result
|
||||
|
||||
|
||||
class QuickInputSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = basic_models.QuickInput
|
||||
fields = ['name', 'value', 'group']
|
||||
|
||||
|
||||
class ProductCategorySerializer(BaseSerializer):
|
||||
class Meta:
|
||||
model = basic_models.ProductCategory
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class ProductSerializer(serializers.ModelSerializer):
|
||||
class ProductSerializer(BaseSerializer):
|
||||
class Meta:
|
||||
model = basic_models.Product
|
||||
fields = '__all__'
|
||||
depth = 1 # 展开外键关系
|
||||
|
||||
def to_representation(self, instance):
|
||||
result = super().to_representation(instance)
|
||||
result['category'] = {
|
||||
'id': instance.category.id,
|
||||
'name': instance.category.name
|
||||
}
|
||||
return result
|
||||
|
||||
|
||||
class WareHouseSerializer(serializers.ModelSerializer):
|
||||
class WareHouseSerializer(BaseSerializer):
|
||||
class Meta:
|
||||
model = basic_models.WareHouse
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class SupplierSerializer(serializers.ModelSerializer):
|
||||
class SupplierSerializer(BaseSerializer):
|
||||
class Meta:
|
||||
model = basic_models.Supplier
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class EmployeeSerializer(serializers.ModelSerializer):
|
||||
class EmployeeSerializer(BaseSerializer):
|
||||
class Meta:
|
||||
model = basic_models.Employee
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class CustomerSerializer(serializers.ModelSerializer):
|
||||
class CustomerSerializer(BaseSerializer):
|
||||
created_by = serializers.PrimaryKeyRelatedField(
|
||||
queryset=basic_models.Employee.objects.all(),
|
||||
required=False,
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = basic_models.Customer
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class VehicleTypeSerializer(serializers.ModelSerializer):
|
||||
class VehicleTypeSerializer(BaseSerializer):
|
||||
class Meta:
|
||||
model = basic_models.VehicleType
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class BankAccountSerializer(serializers.ModelSerializer):
|
||||
class BankAccountSerializer(BaseSerializer):
|
||||
class Meta:
|
||||
model = basic_models.BankAccount
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class DeviceInfoSerializer(serializers.ModelSerializer):
|
||||
class DeviceInfoSerializer(BaseSerializer):
|
||||
class Meta:
|
||||
model = basic_models.DeviceInfo
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class VehicleTransportRecordSerializer(serializers.ModelSerializer):
|
||||
class VehicleTransportRecordSerializer(BaseSerializer):
|
||||
vehicle_type_name = serializers.CharField(source='vehicle_type.name', read_only=True)
|
||||
|
||||
class Meta:
|
||||
|
||||
Reference in New Issue
Block a user