44 lines
1.2 KiB
Python
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
|