Files
2024-11-27 13:18:16 +01:00

95 lines
2.4 KiB
Python
Executable File

from rest_framework import serializers
from outbo.apps.core.serializers import PolymorphicSerializer
from outbo.apps.organizations.models import (
AgencyOrganization,
ClientOrganization,
SupplierOrganization,
Brand,
Category,
Organization,
)
# Organizations
class _BaseOrganizationSerializer(serializers.ModelSerializer):
class Meta:
fields = (
"id",
"name",
)
class _OrganizationSerializer:
class List(_BaseOrganizationSerializer):
class Meta(_BaseOrganizationSerializer.Meta):
model = Organization
class _AgencyOrganizationSerializer:
class List(_BaseOrganizationSerializer):
class Meta(_BaseOrganizationSerializer.Meta):
model = AgencyOrganization
class _ClientOrganizationSerializer:
class List(_BaseOrganizationSerializer):
class Meta(_BaseOrganizationSerializer.Meta):
model = ClientOrganization
class _SupplierOrganizationSerializer:
class List(_BaseOrganizationSerializer):
class Meta(_BaseOrganizationSerializer.Meta):
model = SupplierOrganization
class _BaseOrganizationPolymorphicSerializer(PolymorphicSerializer):
model_serializer_mapping = {
AgencyOrganization: _AgencyOrganizationSerializer.List,
ClientOrganization: _ClientOrganizationSerializer.List,
SupplierOrganization: _SupplierOrganizationSerializer.List,
Organization: _OrganizationSerializer.List,
}
class OrganizationSerializer:
class Retrieve(_BaseOrganizationPolymorphicSerializer):
pass
class List(_BaseOrganizationPolymorphicSerializer):
pass
# Brands
class _BaseBrandSerializer(serializers.ModelSerializer):
class Meta:
model = Brand
fields = ["name"]
class BrandSerializer(serializers.ModelSerializer):
# Create & Update not needed
class Retrieve(_BaseBrandSerializer):
pass
class List(_BaseBrandSerializer):
class Meta(_BaseBrandSerializer.Meta):
fields = ["id"] + _BaseBrandSerializer.Meta.fields
# Categories
class _BaseCategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = ["name"]
class CategorySerializer:
class Retrieve(_BaseCategorySerializer):
pass
class List(_BaseCategorySerializer):
class Meta(_BaseCategorySerializer.Meta):
fields = ["id"] + _BaseCategorySerializer.Meta.fields