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)),