from django.http import HttpRequest from django.utils import timezone from .models import AnoCenso SESSION_KEY = "ano_censo" def default_ano_censo() -> int: configured_year = ( AnoCenso.objects.order_by("-ano") .values_list("ano", flat=True) .first() ) return configured_year or timezone.localdate().year - 1 def available_anos_censo() -> list[int]: years = list(AnoCenso.objects.order_by("-ano").values_list("ano", flat=True)) return years or [default_ano_censo()] def get_selected_ano_censo(request: HttpRequest) -> int: raw_value = request.session.get(SESSION_KEY) try: selected_year = int(raw_value) except (TypeError, ValueError): selected_year = default_ano_censo() request.session[SESSION_KEY] = selected_year return selected_year if AnoCenso.objects.filter(ano=selected_year).exists(): return selected_year selected_year = default_ano_censo() request.session[SESSION_KEY] = selected_year return selected_year def set_selected_ano_censo(request: HttpRequest, ano_censo: int) -> None: if not AnoCenso.objects.filter(ano=ano_censo).exists(): raise ValueError("Ano do censo nao cadastrado.") request.session[SESSION_KEY] = ano_censo