autocensup/core/year.py

44 lines
1.2 KiB
Python

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