diff --git a/sigi/apps/eventos/admin.py b/sigi/apps/eventos/admin.py
index f56c99d..a27860c 100644
--- a/sigi/apps/eventos/admin.py
+++ b/sigi/apps/eventos/admin.py
@@ -19,6 +19,7 @@ from import_export.fields import Field
from tinymce.models import HTMLField
from tinymce.widgets import AdminTinyMCE
from weasyprint import HTML
+from sigi.apps.contatos.models import UnidadeFederativa
from sigi.apps.eventos.models import (
Checklist,
Cronograma,
@@ -110,6 +111,7 @@ class EventoResource(ValueLabeledResource):
"casa_anfitria__bairro",
"casa_anfitria__municipio__nome",
"casa_anfitria__municipio__uf__sigla",
+ "casa_anfitria__municipio__uf__regiao",
"casa_anfitria__cep",
"casa_anfitria__email",
"local",
@@ -142,6 +144,11 @@ class EventoResource(ValueLabeledResource):
def dehydrate_status(self, obj):
return dict(Evento.STATUS_CHOICES)[obj["status"]]
+ def dehydrate_casa_anfitria__municipio__uf__regiao(self, obj):
+ return dict(UnidadeFederativa.REGIAO_CHOICES)[
+ obj["casa_anfitria__municipio__uf__regiao"]
+ ]
+
class ChecklistInline(admin.StackedInline):
model = Checklist
@@ -543,15 +550,18 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin):
date_hierarchy = "data_inicio"
list_display = (
"get_banner",
+ "publicar",
"get_tipo_evento",
"nome",
"turma",
"status",
- "publicar",
- "link_sigad",
+ "get_link_sigad",
"data_inicio",
"data_termino",
"get_municipio",
+ "get_uf",
+ "get_regiao",
+ "get_populacao",
"solicitante",
"total_participantes",
)
@@ -562,6 +572,8 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin):
("num_processo", EmptyFilter),
"tipo_evento",
"tipo_evento__categoria",
+ "casa_anfitria__municipio__uf",
+ "casa_anfitria__municipio__uf__regiao",
("data_inicio", DateRangeFilter),
"virtual",
"solicitante",
@@ -587,6 +599,21 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin):
)
save_as = True
+ @admin.display(description=_("banner"))
+ def get_banner(self, obj):
+ if obj.banner:
+ return mark_safe(
+ f''
+ )
+ else:
+ return ""
+
+ @admin.display(description=_("SIGAD"), ordering="num_processo")
+ def get_link_sigad(self, obj):
+ if obj.pk is None:
+ return ""
+ return mark_safe(obj.get_sigad_url())
+
@admin.display(description=_("Tipo Evento"), ordering="tipo_evento__nome")
def get_tipo_evento(self, obj):
return obj.tipo_evento.nome
@@ -596,26 +623,38 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin):
)
def get_municipio(self, obj):
if obj.casa_anfitria:
- return str(obj.casa_anfitria.municipio)
+ return obj.casa_anfitria.municipio.nome
else:
return None
@admin.display(
- description=_("número do processo SIGAD"), ordering="num_processo"
+ description=_("UF"), ordering="casa_anfitria__municipio__uf"
)
- def link_sigad(self, obj):
- if obj.pk is None:
- return ""
- return mark_safe(obj.get_sigad_url())
+ def get_uf(self, obj):
+ if obj.casa_anfitria:
+ return obj.casa_anfitria.municipio.uf.nome
+ else:
+ return None
- @admin.display(description=_("banner"))
- def get_banner(self, obj):
- if obj.banner:
- return mark_safe(
- f''
- )
+ @admin.display(
+ description=_("Região"),
+ ordering="casa_anfitria__municipio__uf__regiao",
+ )
+ def get_regiao(self, obj):
+ if obj.casa_anfitria:
+ return obj.casa_anfitria.municipio.uf.get_regiao_display()
else:
- return ""
+ return None
+
+ @admin.display(
+ description=_("População"),
+ ordering="casa_anfitria__municipio__populacao",
+ )
+ def get_populacao(self, obj):
+ if obj.casa_anfitria:
+ return obj.casa_anfitria.municipio.populacao
+ else:
+ return None
def render_change_form(self, request, context, add, change, form_url, obj):
perm = request.user.has_perm("eventos.createcourse_evento")
diff --git a/sigi/apps/eventos/migrations/0043_alter_solicitacao_estimativa_casas_and_more.py b/sigi/apps/eventos/migrations/0043_alter_solicitacao_estimativa_casas_and_more.py
new file mode 100644
index 0000000..441b94b
--- /dev/null
+++ b/sigi/apps/eventos/migrations/0043_alter_solicitacao_estimativa_casas_and_more.py
@@ -0,0 +1,30 @@
+# Generated by Django 4.2.4 on 2023-09-18 11:59
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+ dependencies = [
+ ("eventos", "0042_atualiza_status_solicitacao"),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name="solicitacao",
+ name="estimativa_casas",
+ field=models.PositiveIntegerField(
+ default=0,
+ help_text="estimativa de quantas Casas participarão dos eventos",
+ verbose_name="estimativa de Casas participantes",
+ ),
+ ),
+ migrations.AlterField(
+ model_name="solicitacao",
+ name="estimativa_servidores",
+ field=models.PositiveIntegerField(
+ default=0,
+ help_text="estimativa de quantos Servidores participarão dos eventos",
+ verbose_name="estimativa de servidores participantes",
+ ),
+ ),
+ ]
diff --git a/sigi/apps/eventos/models.py b/sigi/apps/eventos/models.py
index 4419974..073c7e6 100644
--- a/sigi/apps/eventos/models.py
+++ b/sigi/apps/eventos/models.py
@@ -143,12 +143,14 @@ class Solicitacao(models.Model):
estimativa_casas = models.PositiveIntegerField(
_("estimativa de Casas participantes"),
help_text=_("estimativa de quantas Casas participarão dos eventos"),
+ default=0,
)
estimativa_servidores = models.PositiveIntegerField(
_("estimativa de servidores participantes"),
help_text=_(
"estimativa de quantos Servidores participarão dos eventos"
),
+ default=0,
)
class Meta:
@@ -185,6 +187,7 @@ class Solicitacao(models.Model):
counters = Evento.objects.filter(
status__in=[Evento.STATUS_CONFIRMADO, Evento.STATUS_REALIZADO],
casa_anfitria__municipio__uf=self.casa.municipio.uf,
+ tipo_evento__categoria=TipoEvento.CATEGORIA_OFICINA,
).aggregate(
total=Count("id"),
no_ano=Count("id", filter=Q(data_inicio__year=ano_corrente)),