From 85ee68855ce81daff5118d8a4732eef39aed5db0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ses=C3=B3stris=20Vieira?= Date: Tue, 3 Oct 2023 09:41:18 -0300 Subject: [PATCH] =?UTF-8?q?Ajustes=20solicitados=20na=20homologa=C3=A7?= =?UTF-8?q?=C3=A3o=20do=20Gertiq=20#163655?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0050_alter_evento_total_participantes.py | 24 ++++++++++++++++++ sigi/apps/eventos/models.py | 25 ++++++++++++------- 2 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 sigi/apps/eventos/migrations/0050_alter_evento_total_participantes.py diff --git a/sigi/apps/eventos/migrations/0050_alter_evento_total_participantes.py b/sigi/apps/eventos/migrations/0050_alter_evento_total_participantes.py new file mode 100644 index 0000000..b69187f --- /dev/null +++ b/sigi/apps/eventos/migrations/0050_alter_evento_total_participantes.py @@ -0,0 +1,24 @@ +# Generated by Django 4.2.4 on 2023-10-03 12:40 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ( + "eventos", + "0049_evento_aprovados_saberes_evento_data_sincronizacao_and_more", + ), + ] + + operations = [ + migrations.AlterField( + model_name="evento", + name="total_participantes", + field=models.PositiveIntegerField( + default=0, + help_text="Se existe evento relacionado no saberes, mostra o número de participantes aprovados naquela plataforma. Senão, mostra a somatória de participantes das Casas convidadas ou o número de participantes informado manualmente pelo usuário.", + verbose_name="total de participantes/aprovados", + ), + ), + ] diff --git a/sigi/apps/eventos/models.py b/sigi/apps/eventos/models.py index 85f5b4c..6aff6d2 100644 --- a/sigi/apps/eventos/models.py +++ b/sigi/apps/eventos/models.py @@ -411,13 +411,13 @@ class Evento(models.Model): observacao = models.TextField(_("Observações e anotações"), blank=True) publico_alvo = models.TextField(_("Público alvo"), blank=True) total_participantes = models.PositiveIntegerField( - _("total de participantes"), + _("total de participantes/aprovados"), default=0, help_text=_( - "Se informar quantidade de participantes na aba de " - "convites, este campo será ajustado com a somatória " - "dos participantes naquela aba. Senão, será igual ao número de " - "inscritos no Saberes." + "Se existe evento relacionado no saberes, mostra o número de " + "participantes aprovados naquela plataforma. Senão, mostra a " + "somatória de participantes das Casas convidadas ou o número " + "de participantes informado manualmente pelo usuário." ), ) inscritos_saberes = models.PositiveIntegerField( @@ -632,8 +632,10 @@ class Evento(models.Model): self.aprovados_saberes = aprovados self.data_sincronizacao = timezone.localtime() - if self.total_participantes == 0: - self.total_participantes = self.inscritos_saberes + # O total de participantes em eventos que possuem curso no Saberes + # é sempre o número de aprovados no Saberes, independente do que o + # usuário tenha digitado nesse campo ou no inline de casas convidadas + self.total_participantes = self.aprovados_saberes self.save() @@ -671,10 +673,15 @@ class Evento(models.Model): proximo = int(ultimo_evento.turma[:2]) + 1 self.turma = f"{proximo:02}/{ano:04}" - # É preciso salvar para poder usar o relacionamento com convites # + # É preciso salvar para poder usar o relacionamento com convites super().save(*args, **kwargs) - if self.total_participantes == 0: + if self.total_participantes == 0 and self.moodle_courseid is None: + # Só calcula total_participantes se não tem curso relacionado + # no ambiente Saberes. Se tiver curso no saberes, este campo será + # preenchido com o total de aprovados quando da sincronização + # veja o método self.sincroniza.saberes() + total = self.convite_set.aggregate( total=Sum("qtde_participantes") )["total"]