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
72 lines
2.2 KiB
Python
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)
|