Browse Source

Adiciona links no dash de serviços por ano

master 4.0.17
Sesóstris Vieira 2 weeks ago
parent
commit
ffd1e21feb
  1. 1
      sigi/apps/servicos/admin.py
  2. 30
      sigi/apps/servicos/dashboards.py

1
sigi/apps/servicos/admin.py

@ -107,6 +107,7 @@ class ServicoAdmin(ReturnMixin, ExportActionMixin, admin.ModelAdmin):
]
autocomplete_fields = ("casa_legislativa",)
readonly_fields = ["data_alteracao"]
date_hierarchy = "data_ativacao"
list_filter = (
"tipo_servico",
"hospedagem_interlegis",

30
sigi/apps/servicos/dashboards.py

@ -3,6 +3,7 @@ import datetime
import locale
from dashboard import Dashcard, getcolor
from random import choice, randint, seed
from urllib.parse import urlencode
from django.db.models import Count, F, Q
from django.db.models.functions import TruncMonth
from django.http import QueryDict
@ -448,14 +449,21 @@ class ServicosAno(Dashcard):
return labels
def get_datasets(self, request, queryset=None):
meses = {calendar.month_abbr[x + 1]: str(x + 1) for x in range(12)}
ano = request.GET.get("ano", None)
if queryset is None:
queryset = self.get_queryset(request)
if request.GET.get("ano", None):
if ano:
lang = to_locale(get_language()) + ".UTF-8"
locale.setlocale(locale.LC_ALL, lang)
map_function = lambda x: _(calendar.month_abbr[x])
map_yaxis = lambda x: {
"data_ativacao__year": ano,
"data_ativacao__month": meses[x],
}
else:
map_function = str
map_yaxis = lambda x: {"data_ativacao__year": x}
labels = self.get_labels(request, queryset)
@ -472,6 +480,26 @@ class ServicosAno(Dashcard):
"label": s,
"data": series[s],
"backgroundColor": getcolor(s),
"links": [
self.get_view_link(s, map_yaxis(k), v)
for k, v in series[s].items()
],
}
for s in series
]
def get_view_link(self, xaxis, yaxis, value):
base_url = reverse("admin:servicos_servico_changelist")
if value > 0:
yaxis["hospedagem_interlegis__exact"] = 1
try:
yaxis["tipo_servico__id__exact"] = TipoServico.objects.get(
sigla=xaxis
).id
except (
TipoServico.DoesNotExist,
TipoServico.MultipleObjectsReturned,
):
return None
return f"{base_url}?{urlencode(yaxis)}"
return None

Loading…
Cancel
Save