Implement exchange imports and frontend reporting APIs
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 3m50s
CI/CD Pipeline / Run Tests (push) Successful in 3m57s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
CI/CD Pipeline / Deploy to Server (push) Has been skipped
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 3m50s
CI/CD Pipeline / Run Tests (push) Successful in 3m57s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
CI/CD Pipeline / Deploy to Server (push) Has been skipped
This commit is contained in:
@@ -2,13 +2,14 @@
|
||||
Сериализаторы для организаций.
|
||||
|
||||
Содержит:
|
||||
- OrganizationSerializer - полный сериализатор
|
||||
- OrganizationListSerializer - краткий для списков
|
||||
- legacy nested serializers for report forms;
|
||||
- frontend-facing serializers for organization catalog endpoints.
|
||||
"""
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
from apps.organization.models import Organization
|
||||
from apps.registers.models import Register
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
class OrganizationRegisterSerializer(serializers.ModelSerializer):
|
||||
@@ -21,7 +22,7 @@ class OrganizationRegisterSerializer(serializers.ModelSerializer):
|
||||
|
||||
|
||||
class OrganizationSerializer(serializers.ModelSerializer):
|
||||
"""Полный сериализатор организации."""
|
||||
"""Полный nested-сериализатор организации для внутренних API."""
|
||||
|
||||
active_registry_names = serializers.SerializerMethodField()
|
||||
active_registries = serializers.SerializerMethodField()
|
||||
@@ -32,7 +33,9 @@ class OrganizationSerializer(serializers.ModelSerializer):
|
||||
|
||||
@staticmethod
|
||||
def get_active_registries(obj: Organization) -> list[dict[str, str]]:
|
||||
return OrganizationRegisterSerializer(obj.get_active_registries(), many=True).data
|
||||
return OrganizationRegisterSerializer(
|
||||
obj.get_active_registries(), many=True
|
||||
).data
|
||||
|
||||
class Meta:
|
||||
model = Organization
|
||||
@@ -52,7 +55,7 @@ class OrganizationSerializer(serializers.ModelSerializer):
|
||||
|
||||
|
||||
class OrganizationListSerializer(serializers.ModelSerializer):
|
||||
"""Краткий сериализатор для списков."""
|
||||
"""Краткий nested-сериализатор для списков."""
|
||||
|
||||
active_registry_names = serializers.SerializerMethodField()
|
||||
|
||||
@@ -69,3 +72,125 @@ class OrganizationListSerializer(serializers.ModelSerializer):
|
||||
"ogrn",
|
||||
"active_registry_names",
|
||||
]
|
||||
|
||||
|
||||
class GeneralDirectorSerializer(serializers.Serializer):
|
||||
"""Сериализатор блока генерального директора."""
|
||||
|
||||
full_name = serializers.CharField()
|
||||
inn = serializers.CharField()
|
||||
appointment_date = serializers.DateField(allow_null=True)
|
||||
|
||||
|
||||
class OrganizationCatalogSummarySerializer(serializers.Serializer):
|
||||
"""Сериализатор summary блока организации."""
|
||||
|
||||
financial_reports_available = serializers.BooleanField()
|
||||
tax_reports_available = serializers.BooleanField()
|
||||
active_registry_names = serializers.ListField(child=serializers.CharField())
|
||||
|
||||
|
||||
class OrganizationCatalogBaseSerializer(serializers.ModelSerializer):
|
||||
"""Базовый сериализатор frontend-контракта организации."""
|
||||
|
||||
short_name = serializers.SerializerMethodField()
|
||||
full_name = serializers.CharField(source="name", read_only=True)
|
||||
corporation_scope = serializers.SerializerMethodField()
|
||||
corporation_scope_label = serializers.SerializerMethodField()
|
||||
organization_type_label = serializers.CharField(read_only=True)
|
||||
active_registry_names = serializers.SerializerMethodField()
|
||||
|
||||
@staticmethod
|
||||
def get_short_name(obj: Organization) -> str:
|
||||
return obj.display_short_name
|
||||
|
||||
@staticmethod
|
||||
def get_active_registry_names(obj: Organization) -> list[str]:
|
||||
return obj.get_active_registry_names()
|
||||
|
||||
@staticmethod
|
||||
def get_corporation_scope(obj: Organization) -> list[str]:
|
||||
return obj.get_corporation_scopes()
|
||||
|
||||
@staticmethod
|
||||
def get_corporation_scope_label(obj: Organization) -> list[str]:
|
||||
return obj.get_corporation_scope_labels()
|
||||
|
||||
|
||||
class OrganizationCatalogListSerializer(OrganizationCatalogBaseSerializer):
|
||||
"""Сериализатор списка организаций для `/api/v1/organizations/`."""
|
||||
|
||||
class Meta:
|
||||
model = Organization
|
||||
fields = [
|
||||
"id",
|
||||
"short_name",
|
||||
"full_name",
|
||||
"corporation_scope",
|
||||
"corporation_scope_label",
|
||||
"organization_type",
|
||||
"organization_type_label",
|
||||
"inn",
|
||||
"ogrn",
|
||||
"kpp",
|
||||
"okpo",
|
||||
"active_registry_names",
|
||||
]
|
||||
|
||||
|
||||
class OrganizationCatalogDetailSerializer(OrganizationCatalogBaseSerializer):
|
||||
"""Сериализатор детальной карточки организации."""
|
||||
|
||||
active_registries = serializers.SerializerMethodField()
|
||||
general_director = serializers.SerializerMethodField()
|
||||
summary = serializers.SerializerMethodField()
|
||||
|
||||
@staticmethod
|
||||
def get_active_registries(obj: Organization) -> list[dict[str, str]]:
|
||||
return OrganizationRegisterSerializer(
|
||||
obj.get_active_registries(), many=True
|
||||
).data
|
||||
|
||||
@staticmethod
|
||||
def get_general_director(obj: Organization) -> dict[str, str | None]:
|
||||
return {
|
||||
"full_name": obj.general_director_name,
|
||||
"inn": obj.general_director_inn,
|
||||
"appointment_date": obj.general_director_appointment_date,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def get_summary(obj: Organization) -> dict[str, object]:
|
||||
return {
|
||||
"financial_reports_available": obj.financial_reports_available,
|
||||
"tax_reports_available": obj.tax_reports_available,
|
||||
"active_registry_names": obj.get_active_registry_names(),
|
||||
}
|
||||
|
||||
class Meta:
|
||||
model = Organization
|
||||
fields = [
|
||||
"id",
|
||||
"short_name",
|
||||
"full_name",
|
||||
"corporation_scope",
|
||||
"corporation_scope_label",
|
||||
"organization_type",
|
||||
"organization_type_label",
|
||||
"inn",
|
||||
"ogrn",
|
||||
"kpp",
|
||||
"okpo",
|
||||
"registration_date",
|
||||
"legal_address",
|
||||
"activity_type",
|
||||
"founder_name",
|
||||
"ownership_type",
|
||||
"legal_form",
|
||||
"charter_capital_amount",
|
||||
"general_director",
|
||||
"summary",
|
||||
"active_registries",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user