Browse Source

Ajustes solicitados na homologação dos gertiqs #163985 #163934 #161638 e #160528

pull/166/head 3.0.48
Sesóstris Vieira 1 year ago
parent
commit
749e0ce8c8
  1. 69
      sigi/apps/eventos/admin.py
  2. 30
      sigi/apps/eventos/migrations/0043_alter_solicitacao_estimativa_casas_and_more.py
  3. 3
      sigi/apps/eventos/models.py

69
sigi/apps/eventos/admin.py

@ -19,6 +19,7 @@ from import_export.fields import Field
from tinymce.models import HTMLField from tinymce.models import HTMLField
from tinymce.widgets import AdminTinyMCE from tinymce.widgets import AdminTinyMCE
from weasyprint import HTML from weasyprint import HTML
from sigi.apps.contatos.models import UnidadeFederativa
from sigi.apps.eventos.models import ( from sigi.apps.eventos.models import (
Checklist, Checklist,
Cronograma, Cronograma,
@ -110,6 +111,7 @@ class EventoResource(ValueLabeledResource):
"casa_anfitria__bairro", "casa_anfitria__bairro",
"casa_anfitria__municipio__nome", "casa_anfitria__municipio__nome",
"casa_anfitria__municipio__uf__sigla", "casa_anfitria__municipio__uf__sigla",
"casa_anfitria__municipio__uf__regiao",
"casa_anfitria__cep", "casa_anfitria__cep",
"casa_anfitria__email", "casa_anfitria__email",
"local", "local",
@ -142,6 +144,11 @@ class EventoResource(ValueLabeledResource):
def dehydrate_status(self, obj): def dehydrate_status(self, obj):
return dict(Evento.STATUS_CHOICES)[obj["status"]] 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): class ChecklistInline(admin.StackedInline):
model = Checklist model = Checklist
@ -543,15 +550,18 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin):
date_hierarchy = "data_inicio" date_hierarchy = "data_inicio"
list_display = ( list_display = (
"get_banner", "get_banner",
"publicar",
"get_tipo_evento", "get_tipo_evento",
"nome", "nome",
"turma", "turma",
"status", "status",
"publicar", "get_link_sigad",
"link_sigad",
"data_inicio", "data_inicio",
"data_termino", "data_termino",
"get_municipio", "get_municipio",
"get_uf",
"get_regiao",
"get_populacao",
"solicitante", "solicitante",
"total_participantes", "total_participantes",
) )
@ -562,6 +572,8 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin):
("num_processo", EmptyFilter), ("num_processo", EmptyFilter),
"tipo_evento", "tipo_evento",
"tipo_evento__categoria", "tipo_evento__categoria",
"casa_anfitria__municipio__uf",
"casa_anfitria__municipio__uf__regiao",
("data_inicio", DateRangeFilter), ("data_inicio", DateRangeFilter),
"virtual", "virtual",
"solicitante", "solicitante",
@ -587,6 +599,21 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin):
) )
save_as = True save_as = True
@admin.display(description=_("banner"))
def get_banner(self, obj):
if obj.banner:
return mark_safe(
f'<img src="{obj.banner.url}" width="60" height="60" />'
)
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") @admin.display(description=_("Tipo Evento"), ordering="tipo_evento__nome")
def get_tipo_evento(self, obj): def get_tipo_evento(self, obj):
return obj.tipo_evento.nome return obj.tipo_evento.nome
@ -596,26 +623,38 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin):
) )
def get_municipio(self, obj): def get_municipio(self, obj):
if obj.casa_anfitria: if obj.casa_anfitria:
return str(obj.casa_anfitria.municipio) return obj.casa_anfitria.municipio.nome
else: else:
return None return None
@admin.display( @admin.display(
description=_("número do processo SIGAD"), ordering="num_processo" description=_("UF"), ordering="casa_anfitria__municipio__uf"
) )
def link_sigad(self, obj): def get_uf(self, obj):
if obj.pk is None: if obj.casa_anfitria:
return "" return obj.casa_anfitria.municipio.uf.nome
return mark_safe(obj.get_sigad_url()) else:
return None
@admin.display(description=_("banner")) @admin.display(
def get_banner(self, obj): description=_("Região"),
if obj.banner: ordering="casa_anfitria__municipio__uf__regiao",
return mark_safe( )
f'<img src="{obj.banner.url}" width="60" height="60" />' def get_regiao(self, obj):
) if obj.casa_anfitria:
return obj.casa_anfitria.municipio.uf.get_regiao_display()
else: 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): def render_change_form(self, request, context, add, change, form_url, obj):
perm = request.user.has_perm("eventos.createcourse_evento") perm = request.user.has_perm("eventos.createcourse_evento")

30
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",
),
),
]

3
sigi/apps/eventos/models.py

@ -143,12 +143,14 @@ class Solicitacao(models.Model):
estimativa_casas = models.PositiveIntegerField( estimativa_casas = models.PositiveIntegerField(
_("estimativa de Casas participantes"), _("estimativa de Casas participantes"),
help_text=_("estimativa de quantas Casas participarão dos eventos"), help_text=_("estimativa de quantas Casas participarão dos eventos"),
default=0,
) )
estimativa_servidores = models.PositiveIntegerField( estimativa_servidores = models.PositiveIntegerField(
_("estimativa de servidores participantes"), _("estimativa de servidores participantes"),
help_text=_( help_text=_(
"estimativa de quantos Servidores participarão dos eventos" "estimativa de quantos Servidores participarão dos eventos"
), ),
default=0,
) )
class Meta: class Meta:
@ -185,6 +187,7 @@ class Solicitacao(models.Model):
counters = Evento.objects.filter( counters = Evento.objects.filter(
status__in=[Evento.STATUS_CONFIRMADO, Evento.STATUS_REALIZADO], status__in=[Evento.STATUS_CONFIRMADO, Evento.STATUS_REALIZADO],
casa_anfitria__municipio__uf=self.casa.municipio.uf, casa_anfitria__municipio__uf=self.casa.municipio.uf,
tipo_evento__categoria=TipoEvento.CATEGORIA_OFICINA,
).aggregate( ).aggregate(
total=Count("id"), total=Count("id"),
no_ano=Count("id", filter=Q(data_inicio__year=ano_corrente)), no_ano=Count("id", filter=Q(data_inicio__year=ano_corrente)),

Loading…
Cancel
Save