Browse Source

supressão ou inclusão de campos no FORM de Eventos. Tarefa #161638 Gertiq

pull/166/head
Sesóstris Vieira 1 year ago
parent
commit
fb6dd125ca
  1. 67
      sigi/apps/eventos/admin.py
  2. 3
      sigi/apps/eventos/forms.py
  3. 77
      sigi/apps/eventos/migrations/0039_remove_evento_municipio_evento_data_recebido_coperi_and_more.py
  4. 26
      sigi/apps/eventos/models.py

67
sigi/apps/eventos/admin.py

@ -9,6 +9,7 @@ from django.http import HttpResponse
from django.shortcuts import get_object_or_404, render, redirect from django.shortcuts import get_object_or_404, render, redirect
from django.template import Template, Context from django.template import Template, Context
from django.urls import path, reverse from django.urls import path, reverse
from django.utils import timezone
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
from django_weasyprint.utils import django_url_fetcher from django_weasyprint.utils import django_url_fetcher
@ -109,8 +110,6 @@ class EventoResource(ValueLabeledResource):
"casa_anfitria__cep", "casa_anfitria__cep",
"casa_anfitria__email", "casa_anfitria__email",
"local", "local",
"municipio__nome",
"municipio__uf__sigla",
"observacao", "observacao",
"publico_alvo", "publico_alvo",
"total_participantes", "total_participantes",
@ -183,6 +182,7 @@ class ItemSolicitadoInline(admin.StackedInline):
) )
readonly_fields = ("servidor", "evento") readonly_fields = ("servidor", "evento")
extra = 1 extra = 1
autocomplete_fields = ("tipo_evento",)
@admin.register(TipoEvento) @admin.register(TipoEvento)
@ -200,6 +200,7 @@ class SolicitacaoAdmin(admin.ModelAdmin):
"casa", "casa",
"senador", "senador",
"data_pedido", "data_pedido",
"data_recebido_coperi",
"get_oficinas", "get_oficinas",
"get_municipio", "get_municipio",
"get_uf", "get_uf",
@ -255,18 +256,24 @@ class SolicitacaoAdmin(admin.ModelAdmin):
if item.evento is None: if item.evento is None:
item.evento = Evento( item.evento = Evento(
tipo_evento=item.tipo_evento, tipo_evento=item.tipo_evento,
nome=f"{item.tipo_evento} em {item.solicitacao.casa}", nome=_(
descricao=f"{item.tipo_evento} em {item.solicitacao.casa}", f"{item.tipo_evento} em {item.solicitacao.casa}"
),
descricao=_(
f"{item.tipo_evento} em {item.solicitacao.casa}"
),
virtual=item.virtual, virtual=item.virtual,
solicitante=item.solicitacao.senador, solicitante=item.solicitacao.senador,
num_processo=item.solicitacao.num_processo, num_processo=item.solicitacao.num_processo,
data_pedido=item.solicitacao.data_pedido, data_pedido=item.solicitacao.data_pedido,
data_recebido_coperi=item.solicitacao.data_recebido_coperi,
data_inicio=item.inicio_desejado, data_inicio=item.inicio_desejado,
data_termino=item.inicio_desejado data_termino=item.inicio_desejado
+ datetime.timedelta(days=item.tipo_evento.duracao), + datetime.timedelta(days=item.tipo_evento.duracao),
casa_anfitria=item.solicitacao.casa, casa_anfitria=item.solicitacao.casa,
municipio=item.solicitacao.casa.municipio, observacao=_(
observacao=f"Autorizado por {servidor} com a justificativa '{item.justificativa}", f"Autorizado por {servidor} com a justificativa '{item.justificativa}"
),
status=Evento.STATUS_CONFIRMADO, status=Evento.STATUS_CONFIRMADO,
contato=item.solicitacao.contato, contato=item.solicitacao.contato,
telefone=item.solicitacao.telefone_contato, telefone=item.solicitacao.telefone_contato,
@ -278,6 +285,11 @@ class SolicitacaoAdmin(admin.ModelAdmin):
) )
else: else:
item.evento.status = Evento.STATUS_CONFIRMADO item.evento.status = Evento.STATUS_CONFIRMADO
item.evento.observacao += _(
f"\nConfirmado por {servidor} com a justificativa: {item.justificativa}"
)
item.evento.data_cancelamento = None
item.evento.motivo_cancelamento = ""
self.message_user( self.message_user(
request, request,
_( _(
@ -288,7 +300,13 @@ class SolicitacaoAdmin(admin.ModelAdmin):
) )
elif ItemSolicitado.STATUS_REJEITADO and item.evento is not None: elif ItemSolicitado.STATUS_REJEITADO and item.evento is not None:
item.evento.status = Evento.STATUS_CANCELADO item.evento.status = Evento.STATUS_CANCELADO
item.evento.save() item.evento.observacao += _(
f"\nCancelado por {servidor} com a justificativa: {item.justificativa}"
)
item.evento.data_cancelamento = timezone.localdate()
item.evento.motivo_cancelamento = _(
f"\nCancelado por {servidor} com a justificativa: {item.justificativa}"
)
self.message_user( self.message_user(
request, request,
_( _(
@ -299,24 +317,25 @@ class SolicitacaoAdmin(admin.ModelAdmin):
) )
if item.evento: if item.evento:
item.evento.tipo_evento = item.tipo_evento item.evento.tipo_evento = item.tipo_evento
item.evento.nome = ( item.evento.nome = _(
f"{item.tipo_evento} em {item.solicitacao.casa}" f"{item.tipo_evento} em {item.solicitacao.casa}"
) )
item.evento.descricao = ( item.evento.descricao = _(
f"{item.tipo_evento} em {item.solicitacao.casa}" f"{item.tipo_evento} em {item.solicitacao.casa}"
) )
item.evento.virtual = item.virtual item.evento.virtual = item.virtual
item.evento.solicitante = item.solicitacao.senador item.evento.solicitante = item.solicitacao.senador
item.evento.num_processo = item.solicitacao.num_processo item.evento.num_processo = item.solicitacao.num_processo
item.evento.data_pedido = item.solicitacao.data_pedido item.evento.data_pedido = item.solicitacao.data_pedido
item.evento.data_recebido_coperi = (
item.solicitacao.data_recebido_coperi
)
item.evento.data_inicio = item.inicio_desejado item.evento.data_inicio = item.inicio_desejado
item.evento.data_termino = ( item.evento.data_termino = (
item.inicio_desejado item.inicio_desejado
+ datetime.timedelta(days=item.tipo_evento.duracao) + datetime.timedelta(days=item.tipo_evento.duracao)
) )
item.evento.casa_anfitria = item.solicitacao.casa item.evento.casa_anfitria = item.solicitacao.casa
item.evento.municipio = item.solicitacao.casa.municipio
item.evento.observacao = f"Autorizado por {servidor} com a justificativa '{item.justificativa}"
item.evento.contato = item.solicitacao.contato item.evento.contato = item.solicitacao.contato
item.evento.telefone = item.solicitacao.telefone_contato item.evento.telefone = item.solicitacao.telefone_contato
item.evento.save() item.evento.save()
@ -359,7 +378,7 @@ class SolicitacaoAdmin(admin.ModelAdmin):
def get_oficinas_uf(self, obj): def get_oficinas_uf(self, obj):
return Evento.objects.filter( return Evento.objects.filter(
status__in=[Evento.STATUS_CONFIRMADO, Evento.STATUS_REALIZADO], status__in=[Evento.STATUS_CONFIRMADO, Evento.STATUS_REALIZADO],
municipio__uf=obj.casa.municipio.uf, casa_anfitria__municipio__uf=obj.casa.municipio.uf,
).count() ).count()
@ -396,7 +415,7 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin):
"link_sigad", "link_sigad",
"data_inicio", "data_inicio",
"data_termino", "data_termino",
"municipio", "get_municipio",
"solicitante", "solicitante",
"total_participantes", "total_participantes",
) )
@ -409,20 +428,17 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin):
"tipo_evento__categoria", "tipo_evento__categoria",
("data_inicio", DateRangeFilter), ("data_inicio", DateRangeFilter),
"virtual", "virtual",
"municipio__uf",
"solicitante", "solicitante",
) )
autocomplete_fields = ( autocomplete_fields = (
"tipo_evento", "tipo_evento",
"solicitacao",
"casa_anfitria", "casa_anfitria",
"municipio",
) )
search_fields = ( search_fields = (
"nome", "nome",
"tipo_evento__nome", "tipo_evento__nome",
"casa_anfitria__search_text", "casa_anfitria__search_text",
"municipio__search_text", "casa_anfitria__municipio__search_text",
"solicitante", "solicitante",
"num_processo", "num_processo",
) )
@ -435,11 +451,22 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin):
) )
save_as = True save_as = True
@admin.display(description=_("Tipo Evento")) @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
@admin.display(description=_("número do processo SIGAD")) @admin.display(
description=_("Município"), ordering="casa_anfitria__municipio"
)
def get_municipio(self, obj):
if obj.casa_anfitria:
return str(obj.casa_anfitria.municipio)
else:
return None
@admin.display(
description=_("número do processo SIGAD"), ordering="num_processo"
)
def link_sigad(self, obj): def link_sigad(self, obj):
if obj.pk is None: if obj.pk is None:
return "" return ""
@ -776,7 +803,7 @@ class EventoAdmin(CartExportMixin, admin.ModelAdmin):
api_url = f"{settings.MOODLE_BASE_URL}/webservice/rest/server.php" api_url = f"{settings.MOODLE_BASE_URL}/webservice/rest/server.php"
mws = Moodle(api_url, settings.MOODLE_API_TOKEN) mws = Moodle(api_url, settings.MOODLE_API_TOKEN)
fullname = f"{evento.tipo_evento.nome} - {evento.municipio.nome}/{evento.municipio.uf.sigla} - {evento.tipo_evento.prefixo_turma}{evento.turma}" fullname = f"{evento.tipo_evento.nome} - {evento.casa_anfitria.municipio.nome}/{evento.casa_anfitria.municipio.uf.sigla} - {evento.tipo_evento.prefixo_turma}{evento.turma}"
shortname = f"{abreviatura(evento.tipo_evento.nome)} - {evento.tipo_evento.prefixo_turma}{evento.turma}" shortname = f"{abreviatura(evento.tipo_evento.nome)} - {evento.tipo_evento.prefixo_turma}{evento.turma}"
inicio = int(time.mktime(evento.data_inicio.astimezone().timetuple())) inicio = int(time.mktime(evento.data_inicio.astimezone().timetuple()))
fim = int(time.mktime(evento.data_termino.astimezone().timetuple())) fim = int(time.mktime(evento.data_termino.astimezone().timetuple()))

3
sigi/apps/eventos/forms.py

@ -18,12 +18,11 @@ class EventoAdminForm(forms.ModelForm):
"solicitante", "solicitante",
"num_processo", "num_processo",
"data_pedido", "data_pedido",
"solicitacao", "data_recebido_coperi",
"data_inicio", "data_inicio",
"data_termino", "data_termino",
"carga_horaria", "carga_horaria",
"casa_anfitria", "casa_anfitria",
"municipio",
"observacao", "observacao",
"local", "local",
"publico_alvo", "publico_alvo",

77
sigi/apps/eventos/migrations/0039_remove_evento_municipio_evento_data_recebido_coperi_and_more.py

@ -0,0 +1,77 @@
# Generated by Django 4.2.4 on 2023-08-31 20:53
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
("eventos", "0038_migra_pedidos"),
]
operations = [
migrations.RemoveField(
model_name="evento",
name="municipio",
),
migrations.AddField(
model_name="evento",
name="data_recebido_coperi",
field=models.DateField(
blank=True,
help_text="Data em que o pedido chegou na COPERI",
null=True,
verbose_name="data de recebimento na COPERI",
),
),
migrations.AddField(
model_name="solicitacao",
name="data_recebido_coperi",
field=models.DateField(
blank=True,
help_text="Data em que o pedido chegou na COPERI",
null=True,
verbose_name="data de recebimento na COPERI",
),
),
migrations.AlterField(
model_name="evento",
name="data_pedido",
field=models.DateField(
blank=True,
help_text="Data em que o pedido foi realizado",
null=True,
verbose_name="Data do pedido",
),
),
migrations.AlterField(
model_name="evento",
name="solicitante",
field=models.CharField(
max_length=100, verbose_name="senador(a) solicitante"
),
),
migrations.AlterField(
model_name="itemsolicitado",
name="tipo_evento",
field=models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT,
to="eventos.tipoevento",
),
),
migrations.AlterField(
model_name="solicitacao",
name="data_pedido",
field=models.DateField(
help_text="Data em que o pedido foi realizado",
verbose_name="Data do pedido",
),
),
migrations.AlterField(
model_name="solicitacao",
name="senador",
field=models.CharField(
max_length=100, verbose_name="senador(a) solicitante"
),
),
]

26
sigi/apps/eventos/models.py

@ -73,7 +73,7 @@ class Solicitacao(models.Model):
casa = models.ForeignKey( casa = models.ForeignKey(
Orgao, verbose_name=_("casa solicitante"), on_delete=models.PROTECT Orgao, verbose_name=_("casa solicitante"), on_delete=models.PROTECT
) )
senador = models.CharField(_("senador solicitante"), max_length=100) senador = models.CharField(_("senador(a) solicitante"), max_length=100)
num_processo = models.CharField( num_processo = models.CharField(
_("número do processo SIGAD"), _("número do processo SIGAD"),
max_length=20, max_length=20,
@ -83,9 +83,17 @@ class Solicitacao(models.Model):
descricao = models.TextField(_("descrição da solicitação")) descricao = models.TextField(_("descrição da solicitação"))
data_pedido = models.DateField( data_pedido = models.DateField(
_("Data do pedido"), _("Data do pedido"),
help_text=_("Data em que o pedido do Gabinete chegou à COPERI"), help_text=_("Data em que o pedido foi realizado"),
)
data_recebido_coperi = models.DateField(
_("data de recebimento na COPERI"),
null=True,
blank=True,
help_text=_("Data em que o pedido chegou na COPERI"),
)
contato = models.CharField(
_("pessoa de contato na Casa"), max_length=100, blank=True
) )
contato = models.CharField(_("pessoa de contato na Casa"), max_length=100)
email_contato = models.EmailField(_("e-mail do contato"), blank=True) email_contato = models.EmailField(_("e-mail do contato"), blank=True)
telefone_contato = models.CharField( telefone_contato = models.CharField(
_("telefone do contato"), max_length=20, blank=True _("telefone do contato"), max_length=20, blank=True
@ -148,7 +156,6 @@ class ItemSolicitado(models.Model):
tipo_evento = models.ForeignKey( tipo_evento = models.ForeignKey(
TipoEvento, TipoEvento,
on_delete=models.PROTECT, on_delete=models.PROTECT,
limit_choices_to={"casa_solicita": True},
) )
virtual = models.BooleanField(_("virtual"), default=False) virtual = models.BooleanField(_("virtual"), default=False)
inicio_desejado = models.DateField( inicio_desejado = models.DateField(
@ -246,7 +253,7 @@ class Evento(models.Model):
), ),
) )
virtual = models.BooleanField(_("Virtual"), default=False) virtual = models.BooleanField(_("Virtual"), default=False)
solicitante = models.CharField(_("Solicitante"), max_length=100) solicitante = models.CharField(_("senador(a) solicitante"), max_length=100)
num_processo = models.CharField( num_processo = models.CharField(
_("número do processo SIGAD"), _("número do processo SIGAD"),
max_length=20, max_length=20,
@ -257,7 +264,13 @@ class Evento(models.Model):
_("Data do pedido"), _("Data do pedido"),
null=True, null=True,
blank=True, blank=True,
help_text=_("Data em que o pedido do Gabinete chegou à COPERI"), help_text=_("Data em que o pedido foi realizado"),
)
data_recebido_coperi = models.DateField(
_("data de recebimento na COPERI"),
null=True,
blank=True,
help_text=_("Data em que o pedido chegou na COPERI"),
) )
solicitacao = models.ForeignKey( solicitacao = models.ForeignKey(
"ocorrencias.Ocorrencia", "ocorrencias.Ocorrencia",
@ -280,7 +293,6 @@ class Evento(models.Model):
blank=True, blank=True,
null=True, null=True,
) )
municipio = models.ForeignKey(Municipio, on_delete=models.PROTECT)
local = models.TextField(_("Local do evento"), blank=True) local = models.TextField(_("Local do evento"), blank=True)
observacao = models.TextField(_("Observações e anotações"), blank=True) observacao = models.TextField(_("Observações e anotações"), blank=True)
publico_alvo = models.TextField(_("Público alvo"), blank=True) publico_alvo = models.TextField(_("Público alvo"), blank=True)

Loading…
Cancel
Save