From 1e7959c10e1df8ba69eb576991b1b5c05312f0c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ses=C3=B3stris=20Vieira?= Date: Wed, 4 Oct 2023 08:21:57 -0300 Subject: [PATCH] =?UTF-8?q?Novos=20statuses=20de=20evento=20e=20solicita?= =?UTF-8?q?=C3=A7=C3=A3o=20de=20eventos.=20Gertiq=20#160524?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sigi/apps/eventos/admin.py | 8 +-- .../migrations/0048_evento_set_defaults.py | 6 +- .../migrations/0051_ajusta_status_evento.py | 45 +++++++++++++++ ...us_alter_itemsolicitado_status_and_more.py | 55 +++++++++++++++++++ sigi/apps/eventos/models.py | 33 ++++------- sigi/apps/eventos/views.py | 5 +- sigi/apps/ocorrencias/views.py | 2 +- 7 files changed, 118 insertions(+), 36 deletions(-) create mode 100644 sigi/apps/eventos/migrations/0051_ajusta_status_evento.py create mode 100644 sigi/apps/eventos/migrations/0052_alter_evento_status_alter_itemsolicitado_status_and_more.py diff --git a/sigi/apps/eventos/admin.py b/sigi/apps/eventos/admin.py index 2213524..cb28c35 100644 --- a/sigi/apps/eventos/admin.py +++ b/sigi/apps/eventos/admin.py @@ -79,7 +79,7 @@ class SolicitacaoResource(LabeledResourse): def dehydrate_oficinas_uf(sekf, obj): return Evento.objects.filter( - status__in=[Evento.STATUS_CONFIRMADO, Evento.STATUS_REALIZADO], + status__in=[Evento.STATUS_AUTORIZADO, Evento.STATUS_REALIZADO], casa_anfitria__municipio__uf=obj.casa.municipio.uf, data_inicio__year__gte=timezone.localdate().year - 2, ).count() @@ -389,7 +389,7 @@ class SolicitacaoAdmin(CartExportMixin, admin.ModelAdmin): item.status == ItemSolicitado.STATUS_SOLICITADO and item.evento is not None ): - item.evento.status = Evento.STATUS_ACONFIRMAR + item.evento.status = Evento.STATUS_PREVISTO self.message_user( request, _( @@ -426,7 +426,7 @@ class SolicitacaoAdmin(CartExportMixin, admin.ModelAdmin): observacao=_( f"Autorizado por {servidor} com a justificativa '{item.justificativa}" ), - status=Evento.STATUS_CONFIRMADO, + status=Evento.STATUS_AUTORIZADO, contato=item.solicitacao.contato, telefone=item.solicitacao.telefone_contato, ) @@ -436,7 +436,7 @@ class SolicitacaoAdmin(CartExportMixin, admin.ModelAdmin): messages.INFO, ) else: - item.evento.status = Evento.STATUS_CONFIRMADO + item.evento.status = Evento.STATUS_AUTORIZADO item.evento.observacao += _( f"\nConfirmado por {servidor} com a justificativa: {item.justificativa}" ) diff --git a/sigi/apps/eventos/migrations/0048_evento_set_defaults.py b/sigi/apps/eventos/migrations/0048_evento_set_defaults.py index b9f3667..b0e2c0d 100644 --- a/sigi/apps/eventos/migrations/0048_evento_set_defaults.py +++ b/sigi/apps/eventos/migrations/0048_evento_set_defaults.py @@ -31,8 +31,4 @@ class Migration(migrations.Migration): ("eventos", "0047_alter_evento_contato_inscricao_and_more"), ] - operations = [ - migrations.RunPython( - forwards, - ) - ] + operations = [migrations.RunPython(forwards)] diff --git a/sigi/apps/eventos/migrations/0051_ajusta_status_evento.py b/sigi/apps/eventos/migrations/0051_ajusta_status_evento.py new file mode 100644 index 0000000..61cafa1 --- /dev/null +++ b/sigi/apps/eventos/migrations/0051_ajusta_status_evento.py @@ -0,0 +1,45 @@ +# Generated by Django 4.2.4 on 2023-10-03 13:51 + +from django.db import migrations + +# Os status dos eventos serão simplificados para o seguinte: +# +# STATUS_PREVISTO substituirá o atual STATUS_PREVISAO +# STATUS_AUTORIZADO substituirá o atual STATUS_CONFIRMADO +# STATUS_SOBRESTADO substituirá o atual STATUS_ARQUIVADO +# STATUS_CANCELADO mantém igual +# STATUS_REALIZADO mantém igual +# +# Os eventos que estejam em um status que será eliminado deverá migrar +# para outro status seguindo as regras abaixo: +# +# Status atual => muda para +# ---------------------- --------------- +# STATUS_PLANEJAMENTO => STATUS_PREVISAO +# STATUS_AGUARDANDOSIGAD => STATUS_PREVISAO +# STATUS_ACONFIRMAR => STATUS_PREVISAO + + +def forwards(apps, schema_editor): + Evento = apps.get_model("eventos", "Evento") + + STATUS_PLANEJAMENTO = "E" + STATUS_AGUARDANDOSIGAD = "G" + STATUS_PREVISAO = "P" + STATUS_ACONFIRMAR = "A" + + Evento.objects.filter( + status__in=[ + STATUS_PLANEJAMENTO, + STATUS_AGUARDANDOSIGAD, + STATUS_ACONFIRMAR, + ] + ).update(status=STATUS_PREVISAO) + + +class Migration(migrations.Migration): + dependencies = [ + ("eventos", "0050_alter_evento_total_participantes"), + ] + + operations = [migrations.RunPython(forwards)] diff --git a/sigi/apps/eventos/migrations/0052_alter_evento_status_alter_itemsolicitado_status_and_more.py b/sigi/apps/eventos/migrations/0052_alter_evento_status_alter_itemsolicitado_status_and_more.py new file mode 100644 index 0000000..b559fbd --- /dev/null +++ b/sigi/apps/eventos/migrations/0052_alter_evento_status_alter_itemsolicitado_status_and_more.py @@ -0,0 +1,55 @@ +# Generated by Django 4.2.4 on 2023-10-04 11:18 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("eventos", "0051_ajusta_status_evento"), + ] + + operations = [ + migrations.AlterField( + model_name="evento", + name="status", + field=models.CharField( + choices=[ + ("P", "Previto"), + ("O", "Autorizado"), + ("R", "Realizado"), + ("C", "Cancelado"), + ("Q", "Sobrestado"), + ], + max_length=1, + verbose_name="Status", + ), + ), + migrations.AlterField( + model_name="itemsolicitado", + name="status", + field=models.CharField( + choices=[ + ("S", "Solicitado"), + ("A", "Autorizado"), + ("R", "Não autorizado"), + ], + default="S", + verbose_name="status", + ), + ), + migrations.AlterField( + model_name="solicitacao", + name="status", + field=models.CharField( + choices=[ + ("S", "Solicitado"), + ("A", "Autorizado"), + ("R", "Não autorizado"), + ("C", "Concluído"), + ], + default="S", + max_length=1, + verbose_name="Status", + ), + ), + ] diff --git a/sigi/apps/eventos/models.py b/sigi/apps/eventos/models.py index 6aff6d2..c48954d 100644 --- a/sigi/apps/eventos/models.py +++ b/sigi/apps/eventos/models.py @@ -90,7 +90,7 @@ class Solicitacao(models.Model): STATUS_CHOICES = ( (STATUS_SOLICITADO, _("Solicitado")), (STATUS_AUTORIZADO, _("Autorizado")), - (STATUS_REJEITADO, _("Rejeitado")), + (STATUS_REJEITADO, _("Não autorizado")), (STATUS_CONCLUIDO, _("Concluído")), ) casa = models.ForeignKey( @@ -196,7 +196,7 @@ class Solicitacao(models.Model): def get_oficinas_uf(self): ano_corrente = timezone.localdate().year counters = Evento.objects.filter( - status__in=[Evento.STATUS_CONFIRMADO, Evento.STATUS_REALIZADO], + status__in=[Evento.STATUS_AUTORIZADO, Evento.STATUS_REALIZADO], casa_anfitria__municipio__uf=self.casa.municipio.uf, tipo_evento__categoria=TipoEvento.CATEGORIA_OFICINA, ).aggregate( @@ -227,7 +227,7 @@ class ItemSolicitado(models.Model): STATUS_CHOICES = ( (STATUS_SOLICITADO, _("Solicitado")), (STATUS_AUTORIZADO, _("Autorizado")), - (STATUS_REJEITADO, _("Rejeitado")), + (STATUS_REJEITADO, _("Não autorizado")), ) solicitacao = models.ForeignKey(Solicitacao, on_delete=models.CASCADE) tipo_evento = models.ForeignKey( @@ -313,24 +313,18 @@ class Evento(models.Model): def message(self): return str(self) - STATUS_PLANEJAMENTO = "E" - STATUS_AGUARDANDOSIGAD = "G" - STATUS_PREVISAO = "P" - STATUS_ACONFIRMAR = "A" - STATUS_CONFIRMADO = "O" + STATUS_PREVISTO = "P" + STATUS_AUTORIZADO = "O" STATUS_REALIZADO = "R" STATUS_CANCELADO = "C" - STATUS_ARQUIVADO = "Q" + STATUS_SOBRESTADO = "Q" STATUS_CHOICES = ( - (STATUS_PLANEJAMENTO, _("Em planejamento")), - (STATUS_AGUARDANDOSIGAD, _("Aguardando abertura SIGAD")), - (STATUS_PREVISAO, _("Previsão")), - (STATUS_ACONFIRMAR, _("A confirmar")), - (STATUS_CONFIRMADO, _("Confirmado")), + (STATUS_PREVISTO, _("Previto")), + (STATUS_AUTORIZADO, _("Autorizado")), (STATUS_REALIZADO, _("Realizado")), (STATUS_CANCELADO, _("Cancelado")), - (STATUS_ARQUIVADO, _("Arquivado")), + (STATUS_SOBRESTADO, _("Sobrestado")), ) tipo_evento = models.ForeignKey( @@ -655,7 +649,7 @@ class Evento(models.Model): if ( self.turma == "" and self.data_inicio - and self.status == Evento.STATUS_CONFIRMADO + and self.status == Evento.STATUS_AUTORIZADO and self.tipo_evento.gerar_turma ): ano = self.data_inicio.year @@ -690,12 +684,7 @@ class Evento(models.Model): # Salva de novo se o total de participantes mudou # super().save(*args, **kwargs) - if self.status in [ - Evento.STATUS_PLANEJAMENTO, - Evento.STATUS_AGUARDANDOSIGAD, - Evento.STATUS_PREVISAO, - Evento.STATUS_ACONFIRMAR, - ]: + if self.status == Evento.STATUS_PREVISTO: if ( self.cronograma_set.count() == 0 and self.tipo_evento.checklist_set.count() > 0 diff --git a/sigi/apps/eventos/views.py b/sigi/apps/eventos/views.py index 01bf9af..05c35a8 100644 --- a/sigi/apps/eventos/views.py +++ b/sigi/apps/eventos/views.py @@ -103,10 +103,7 @@ def calendario(request): lambda x, y: (x[0], {"label": x[1], "icon": y}), Evento.STATUS_CHOICES, [ - "assignment", - "hourglass_empty", "access_time", - "thumbs_up_down", "thumb_up", "done_all", "mood_bad", @@ -176,7 +173,7 @@ class EventoListView(ListView): def get_queryset(self): queryset = super().get_queryset() return queryset.filter( - status=Evento.STATUS_CONFIRMADO, publicar=True + status=Evento.STATUS_AUTORIZADO, publicar=True ).order_by("data_inicio") @xframe_options_exempt diff --git a/sigi/apps/ocorrencias/views.py b/sigi/apps/ocorrencias/views.py index f6fc3fa..5c93a12 100644 --- a/sigi/apps/ocorrencias/views.py +++ b/sigi/apps/ocorrencias/views.py @@ -321,7 +321,7 @@ class OficinaChangeView(BaseOcorrenciaChangeView): data_termino=dados["data_termino"], casa_anfitria=ocorrencia.casa_legislativa, municipio=ocorrencia.casa_legislativa.municipio, - status=Evento.STATUS_ACONFIRMAR, + status=Evento.STATUS_PREVISTO, ) evento.save() total += 1