117 lines
4.5 KiB
Python
117 lines
4.5 KiB
Python
from django.contrib.auth.models import Group
|
|
from django.contrib.auth import get_user_model
|
|
from rest_framework import serializers
|
|
from parts import models as parts_models
|
|
|
|
class UserSerializer(serializers.HyperlinkedModelSerializer):
|
|
class Meta:
|
|
model = get_user_model()
|
|
fields = ['id', 'username', 'email', 'first_name', 'last_name', 'groups']
|
|
|
|
class GroupSerializer(serializers.HyperlinkedModelSerializer):
|
|
class Meta:
|
|
model = Group
|
|
fields = ['url', 'id', 'url', 'name']
|
|
|
|
class PackageSerializerNoLink(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = parts_models.Package
|
|
fields = '__all__'
|
|
|
|
class PackageSerializer(serializers.HyperlinkedModelSerializer):
|
|
id = serializers.ReadOnlyField()
|
|
class Meta:
|
|
model = parts_models.Package
|
|
fields = '__all__'
|
|
|
|
class ComponentParameterSerializer(serializers.HyperlinkedModelSerializer):
|
|
id = serializers.ReadOnlyField()
|
|
ro_parameter_type = serializers.ReadOnlyField(source='parameter_type.parameter_name')
|
|
class Meta:
|
|
model = parts_models.ComponentParameter
|
|
fields = '__all__'
|
|
|
|
class ComponentDistributorNumSerializer(serializers.HyperlinkedModelSerializer):
|
|
id = serializers.ReadOnlyField()
|
|
class Meta:
|
|
model = parts_models.DistributorNum
|
|
fields = '__all__'
|
|
|
|
class ComponentSerializer(serializers.HyperlinkedModelSerializer):
|
|
package_data = PackageSerializerNoLink(source='package', read_only=True)
|
|
ro_manufacturer_name = serializers.ReadOnlyField(source='manufacturer.name')
|
|
ro_image = serializers.ReadOnlyField(source='get_resolved_image')
|
|
ro_component_type = serializers.ReadOnlyField(source='component_type.class_name')
|
|
ro_parameters = ComponentParameterSerializer(many=True, source='componentparameter_set', read_only=True)
|
|
ro_distributor_numbers = ComponentDistributorNumSerializer(many=True, source='distributornum_set', read_only=True)
|
|
|
|
class Meta:
|
|
model = parts_models.Component
|
|
fields = ['url',
|
|
'id',
|
|
'name',
|
|
'package_data',
|
|
'package',
|
|
'pref_distri',
|
|
'image',
|
|
'manufacturer',
|
|
'component_type',
|
|
'ro_manufacturer_name',
|
|
'ro_image',
|
|
'ro_component_type',
|
|
'ro_parameters',
|
|
'ro_distributor_numbers']
|
|
|
|
class StockSerializer(serializers.HyperlinkedModelSerializer):
|
|
id = serializers.ReadOnlyField()
|
|
ro_package_name = serializers.ReadOnlyField(source='component.package.name')
|
|
ro_component_name = serializers.ReadOnlyField(source='component.name')
|
|
ro_manufacturer_name = serializers.ReadOnlyField(source='component.manufacturer.name')
|
|
ro_image = serializers.ReadOnlyField(source='component.get_resolved_image')
|
|
class Meta:
|
|
model = parts_models.Stock
|
|
fields = '__all__'
|
|
|
|
class StockSerializerExpandComponent(StockSerializer):
|
|
ro_component = ComponentSerializer(read_only=True, source='component')
|
|
|
|
class StorageSerializer(serializers.HyperlinkedModelSerializer):
|
|
full_path = serializers.ReadOnlyField(source='get_full_path')
|
|
|
|
class Meta:
|
|
model = parts_models.Storage
|
|
fields = ['url', 'id', 'name', 'verbose_name', 'parent_storage', 'responsible', 'template', 'full_path']
|
|
|
|
class StorageSerializerStocksExpanded(StorageSerializer):
|
|
ro_stocks = StockSerializerExpandComponent(many=True, read_only=True, source='stock_set')
|
|
|
|
class Meta(StorageSerializer.Meta):
|
|
fields = StorageSerializer.Meta.fields + ['ro_stocks']
|
|
|
|
class DistributorSerializer(serializers.HyperlinkedModelSerializer):
|
|
id = serializers.ReadOnlyField()
|
|
class Meta:
|
|
model = parts_models.Distributor
|
|
fields = '__all__'
|
|
|
|
class StockIncrementDecrementSerializer(serializers.Serializer):
|
|
increment = serializers.IntegerField()
|
|
|
|
class ManufacturerSerializer(serializers.HyperlinkedModelSerializer):
|
|
id = serializers.ReadOnlyField()
|
|
class Meta:
|
|
model = parts_models.Manufacturer
|
|
fields = '__all__'
|
|
|
|
class ComponentTypeSerializer(serializers.HyperlinkedModelSerializer):
|
|
id = serializers.ReadOnlyField()
|
|
class Meta:
|
|
model = parts_models.ComponentType
|
|
fields = '__all__'
|
|
|
|
class ComponentParameterTypeSerializer(serializers.HyperlinkedModelSerializer):
|
|
id = serializers.ReadOnlyField()
|
|
descriptive_name = serializers.ReadOnlyField()
|
|
class Meta:
|
|
model = parts_models.ComponentParameterType
|
|
fields = '__all__' |