From e774300347de477486e64d154784768cc92e71af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ses=C3=B3stris=20Vieira?= Date: Sat, 16 Jul 2022 10:09:30 -0300 Subject: [PATCH] =?UTF-8?q?N=C3=A3o=20criar=20cronograma=20se=20evento=20r?= =?UTF-8?q?ealizado/cancelado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sigi/apps/eventos/models.py | 114 ++++++++++++++++++++++-------------- 1 file changed, 70 insertions(+), 44 deletions(-) diff --git a/sigi/apps/eventos/models.py b/sigi/apps/eventos/models.py index cf94e57..20ab049 100644 --- a/sigi/apps/eventos/models.py +++ b/sigi/apps/eventos/models.py @@ -13,13 +13,20 @@ from tinymce.models import HTMLField class TipoEvento(models.Model): + CATEGORIA_CURSO = "C" + CATEGORIA_ENCONTRO = "E" + CATEGORIA_OFICINA = "O" + CATEGORIA_SEMINARIO = "S" + CATEGORIA_VISITA = "V" + CATEGORIA_CHOICES = ( - ("C", _("Curso")), - ("E", _("Encontro")), - ("O", _("Oficina")), - ("S", _("Seminário")), - ("V", _("Visita")), + (CATEGORIA_CURSO, _("Curso")), + (CATEGORIA_ENCONTRO, _("Encontro")), + (CATEGORIA_OFICINA, _("Oficina")), + (CATEGORIA_SEMINARIO, _("Seminário")), + (CATEGORIA_VISITA, _("Visita")), ) + nome = models.CharField(_("Nome"), max_length=100) categoria = models.CharField( _("Categoaria"), max_length=1, choices=CATEGORIA_CHOICES @@ -36,15 +43,24 @@ class TipoEvento(models.Model): class Evento(models.Model): + STATUS_PLANEJAMENTO = "E" + STATUS_AGUARDANDOSIGAD = "G" + STATUS_PREVISAO = "P" + STATUS_ACONFIRMAR = "A" + STATUS_CONFIRMADO = "O" + STATUS_REALIZADO = "R" + STATUS_CANCELADO = "C" + STATUS_ARQUIVADO = "Q" + STATUS_CHOICES = ( - ("E", _("Em planejamento")), - ("G", _("Aguardando abertura SIGAD")), - ("P", _("Previsão")), - ("A", _("A confirmar")), - ("O", _("Confirmado")), - ("R", _("Realizado")), - ("C", _("Cancelado")), - ("Q", _("Arquivado")), + (STATUS_PLANEJAMENTO, _("Em planejamento")), + (STATUS_AGUARDANDOSIGAD, _("Aguardando abertura SIGAD")), + (STATUS_PREVISAO, _("Previsão")), + (STATUS_ACONFIRMAR, _("A confirmar")), + (STATUS_CONFIRMADO, _("Confirmado")), + (STATUS_REALIZADO, _("Realizado")), + (STATUS_CANCELADO, _("Cancelado")), + (STATUS_ARQUIVADO, _("Arquivado")), ) tipo_evento = models.ForeignKey( @@ -133,7 +149,7 @@ class Evento(models.Model): return self.num_processo def save(self, *args, **kwargs): - if self.status != "C": + if self.status != Evento.STATUS_CANCELADO: self.data_cancelamento = None self.motivo_cancelamento = "" if self.data_inicio > self.data_termino: @@ -144,34 +160,40 @@ class Evento(models.Model): total = total["total"] if total and total > 0: self.total_participantes = total - if ( - self.cronograma_set.count() == 0 - and self.tipo_evento.checklist_set.count() > 0 - ): - cronograma_list = [] - for item in self.tipo_evento.checklist_set.all(): - cronograma_list.append( - Cronograma( - evento=self, - etapa=item.etapa, - nome=item.nome, - descricao=item.descricao, - duracao=item.duracao, - dependencia=item.dependencia, - responsaveis=item.responsaveis, - comunicar_inicio=item.comunicar_inicio, - comunicar_termino=item.comunicar_termino, - recursos=item.recursos, + if self.status in [ + Evento.STATUS_PLANEJAMENTO, + Evento.STATUS_AGUARDANDOSIGAD, + Evento.STATUS_PREVISAO, + Evento.STATUS_ACONFIRMAR, + ]: + if ( + self.cronograma_set.count() == 0 + and self.tipo_evento.checklist_set.count() > 0 + ): + cronograma_list = [] + for item in self.tipo_evento.checklist_set.all(): + cronograma_list.append( + Cronograma( + evento=self, + etapa=item.etapa, + nome=item.nome, + descricao=item.descricao, + duracao=item.duracao, + dependencia=item.dependencia, + responsaveis=item.responsaveis, + comunicar_inicio=item.comunicar_inicio, + comunicar_termino=item.comunicar_termino, + recursos=item.recursos, + ) ) - ) - self.calcula_datas(cronograma_list) - for item in cronograma_list: - item.save() - elif self.cronograma_set.count() > 0: - cronograma_list = self.cronograma_set.all() - self.calcula_datas(cronograma_list) - for item in cronograma_list: - item.save() + self.calcula_datas(cronograma_list) + for item in cronograma_list: + item.save() + elif self.cronograma_set.count() > 0: + cronograma_list = self.cronograma_set.all() + self.calcula_datas(cronograma_list) + for item in cronograma_list: + item.save() super().save(*args, **kwargs) def calcula_datas(self, cronograma_list): @@ -272,10 +294,14 @@ class Convite(models.Model): class Modulo(models.Model): + TIPO_AULA = "A" + TIPO_PALESTRA = "P" + TIPO_APRESENTACAO = "R" + TIPO_CHOICES = ( - ("A", _("Aula")), - ("P", _("Palestra")), - ("R", _("Apresentação")), + (TIPO_AULA, _("Aula")), + (TIPO_PALESTRA, _("Palestra")), + (TIPO_APRESENTACAO, _("Apresentação")), ) evento = models.ForeignKey( Evento, verbose_name=_("Evento"), on_delete=models.CASCADE