"""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)