Browse Source

Adiciona links no dash de serviços por ano

pull/5/merge 4.0.17
Sesóstris Vieira 3 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",) autocomplete_fields = ("casa_legislativa",)
readonly_fields = ["data_alteracao"] readonly_fields = ["data_alteracao"]
date_hierarchy = "data_ativacao"
list_filter = ( list_filter = (
"tipo_servico", "tipo_servico",
"hospedagem_interlegis", "hospedagem_interlegis",

30
sigi/apps/servicos/dashboards.py

@ -3,6 +3,7 @@ import datetime
import locale import locale
from dashboard import Dashcard, getcolor from dashboard import Dashcard, getcolor
from random import choice, randint, seed from random import choice, randint, seed
from urllib.parse import urlencode
from django.db.models import Count, F, Q from django.db.models import Count, F, Q
from django.db.models.functions import TruncMonth from django.db.models.functions import TruncMonth
from django.http import QueryDict from django.http import QueryDict
@ -448,14 +449,21 @@ class ServicosAno(Dashcard):
return labels return labels
def get_datasets(self, request, queryset=None): 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: if queryset is None:
queryset = self.get_queryset(request) queryset = self.get_queryset(request)
if request.GET.get("ano", None): if ano:
lang = to_locale(get_language()) + ".UTF-8" lang = to_locale(get_language()) + ".UTF-8"
locale.setlocale(locale.LC_ALL, lang) locale.setlocale(locale.LC_ALL, lang)
map_function = lambda x: _(calendar.month_abbr[x]) map_function = lambda x: _(calendar.month_abbr[x])
map_yaxis = lambda x: {
"data_ativacao__year": ano,
"data_ativacao__month": meses[x],
}
else: else:
map_function = str map_function = str
map_yaxis = lambda x: {"data_ativacao__year": x}
labels = self.get_labels(request, queryset) labels = self.get_labels(request, queryset)
@ -472,6 +480,26 @@ class ServicosAno(Dashcard):
"label": s, "label": s,
"data": series[s], "data": series[s],
"backgroundColor": getcolor(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 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