Browse Source

Não criar cronograma se evento realizado/cancelado

pull/159/head
Sesostris Vieira 2 years ago
parent
commit
e774300347
  1. 114
      sigi/apps/eventos/models.py

114
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

Loading…
Cancel
Save