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): class TipoEvento(models.Model):
CATEGORIA_CURSO = "C"
CATEGORIA_ENCONTRO = "E"
CATEGORIA_OFICINA = "O"
CATEGORIA_SEMINARIO = "S"
CATEGORIA_VISITA = "V"
CATEGORIA_CHOICES = ( CATEGORIA_CHOICES = (
("C", _("Curso")), (CATEGORIA_CURSO, _("Curso")),
("E", _("Encontro")), (CATEGORIA_ENCONTRO, _("Encontro")),
("O", _("Oficina")), (CATEGORIA_OFICINA, _("Oficina")),
("S", _("Seminário")), (CATEGORIA_SEMINARIO, _("Seminário")),
("V", _("Visita")), (CATEGORIA_VISITA, _("Visita")),
) )
nome = models.CharField(_("Nome"), max_length=100) nome = models.CharField(_("Nome"), max_length=100)
categoria = models.CharField( categoria = models.CharField(
_("Categoaria"), max_length=1, choices=CATEGORIA_CHOICES _("Categoaria"), max_length=1, choices=CATEGORIA_CHOICES
@ -36,15 +43,24 @@ class TipoEvento(models.Model):
class Evento(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 = ( STATUS_CHOICES = (
("E", _("Em planejamento")), (STATUS_PLANEJAMENTO, _("Em planejamento")),
("G", _("Aguardando abertura SIGAD")), (STATUS_AGUARDANDOSIGAD, _("Aguardando abertura SIGAD")),
("P", _("Previsão")), (STATUS_PREVISAO, _("Previsão")),
("A", _("A confirmar")), (STATUS_ACONFIRMAR, _("A confirmar")),
("O", _("Confirmado")), (STATUS_CONFIRMADO, _("Confirmado")),
("R", _("Realizado")), (STATUS_REALIZADO, _("Realizado")),
("C", _("Cancelado")), (STATUS_CANCELADO, _("Cancelado")),
("Q", _("Arquivado")), (STATUS_ARQUIVADO, _("Arquivado")),
) )
tipo_evento = models.ForeignKey( tipo_evento = models.ForeignKey(
@ -133,7 +149,7 @@ class Evento(models.Model):
return self.num_processo return self.num_processo
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
if self.status != "C": if self.status != Evento.STATUS_CANCELADO:
self.data_cancelamento = None self.data_cancelamento = None
self.motivo_cancelamento = "" self.motivo_cancelamento = ""
if self.data_inicio > self.data_termino: if self.data_inicio > self.data_termino:
@ -144,34 +160,40 @@ class Evento(models.Model):
total = total["total"] total = total["total"]
if total and total > 0: if total and total > 0:
self.total_participantes = total self.total_participantes = total
if ( if self.status in [
self.cronograma_set.count() == 0 Evento.STATUS_PLANEJAMENTO,
and self.tipo_evento.checklist_set.count() > 0 Evento.STATUS_AGUARDANDOSIGAD,
): Evento.STATUS_PREVISAO,
cronograma_list = [] Evento.STATUS_ACONFIRMAR,
for item in self.tipo_evento.checklist_set.all(): ]:
cronograma_list.append( if (
Cronograma( self.cronograma_set.count() == 0
evento=self, and self.tipo_evento.checklist_set.count() > 0
etapa=item.etapa, ):
nome=item.nome, cronograma_list = []
descricao=item.descricao, for item in self.tipo_evento.checklist_set.all():
duracao=item.duracao, cronograma_list.append(
dependencia=item.dependencia, Cronograma(
responsaveis=item.responsaveis, evento=self,
comunicar_inicio=item.comunicar_inicio, etapa=item.etapa,
comunicar_termino=item.comunicar_termino, nome=item.nome,
recursos=item.recursos, 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)
self.calcula_datas(cronograma_list) for item in cronograma_list:
for item in cronograma_list: item.save()
item.save() elif self.cronograma_set.count() > 0:
elif self.cronograma_set.count() > 0: cronograma_list = self.cronograma_set.all()
cronograma_list = self.cronograma_set.all() self.calcula_datas(cronograma_list)
self.calcula_datas(cronograma_list) for item in cronograma_list:
for item in cronograma_list: item.save()
item.save()
super().save(*args, **kwargs) super().save(*args, **kwargs)
def calcula_datas(self, cronograma_list): def calcula_datas(self, cronograma_list):
@ -272,10 +294,14 @@ class Convite(models.Model):
class Modulo(models.Model): class Modulo(models.Model):
TIPO_AULA = "A"
TIPO_PALESTRA = "P"
TIPO_APRESENTACAO = "R"
TIPO_CHOICES = ( TIPO_CHOICES = (
("A", _("Aula")), (TIPO_AULA, _("Aula")),
("P", _("Palestra")), (TIPO_PALESTRA, _("Palestra")),
("R", _("Apresentação")), (TIPO_APRESENTACAO, _("Apresentação")),
) )
evento = models.ForeignKey( evento = models.ForeignKey(
Evento, verbose_name=_("Evento"), on_delete=models.CASCADE Evento, verbose_name=_("Evento"), on_delete=models.CASCADE

Loading…
Cancel
Save