Files
state-corp-backend/src/apps/organization/query_serializers.py
Aleksandr Meshchriakov ee497bd557
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Successful in 1m53s
CI/CD Pipeline / Run Tests (push) Successful in 2m19s
CI/CD Pipeline / Build Docker Images (push) Successful in 3m26s
CI/CD Pipeline / Push to Gitea Registry (push) Failing after 20s
CI/CD Pipeline / Deploy to Server (push) Has been skipped
Fix Ruff import ordering for CI
2026-04-07 16:37:47 +02:00

72 lines
2.2 KiB
Python

"""Query serializers for organization analytics endpoints."""
from apps.organization.models import CorporationScope
from rest_framework import serializers
class DashboardQuerySerializer(serializers.Serializer):
corporation_scope = serializers.ChoiceField(
choices=CorporationScope.choices, required=False
)
class FinancialSummaryQuerySerializer(serializers.Serializer):
report_year = serializers.IntegerField(min_value=2000)
report_quarter = serializers.IntegerField(
min_value=1,
max_value=4,
required=False,
allow_null=True,
)
class EconomicsQuerySerializer(serializers.Serializer):
group = serializers.ChoiceField(
choices=(
("efficiency", "efficiency"),
("profitability", "profitability"),
("debt", "debt"),
("investment", "investment"),
)
)
from_year = serializers.IntegerField(min_value=2000)
to_year = serializers.IntegerField(min_value=2000)
def validate(self, attrs):
if attrs["from_year"] > attrs["to_year"]:
raise serializers.ValidationError(
"`from_year` must be less than or equal to `to_year`"
)
return attrs
class PersonnelQuerySerializer(serializers.Serializer):
report_year = serializers.IntegerField(min_value=2000)
history_years = serializers.IntegerField(min_value=1, max_value=10, default=3)
class EquipmentQuerySerializer(serializers.Serializer):
report_year = serializers.IntegerField(min_value=2000)
class ProductsQuerySerializer(serializers.Serializer):
report_year = serializers.IntegerField(min_value=2000)
frequency = serializers.ChoiceField(
choices=(("quarterly", "quarterly"), ("annual", "annual"))
)
price_mode = serializers.ChoiceField(
choices=(("actual", "actual"), ("fixed", "fixed"))
)
class ForecastQuerySerializer(serializers.Serializer):
scenario = serializers.ChoiceField(
choices=(
("base", "base"),
("optimistic", "optimistic"),
("conservative", "conservative"),
),
default="base",
)
horizon_years = serializers.IntegerField(min_value=1, max_value=10, default=3)