From 444b34b1b791129cc9b2f7b32f8b1f33c21a89b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ses=C3=B3stris=20Vieira?= Date: Mon, 23 Oct 2023 10:12:27 -0300 Subject: [PATCH] Acrescenta envio de e-mail no job --- .../eventos/jobs/daily/sincroniza_saberes.py | 64 +++++++++++++++---- 1 file changed, 50 insertions(+), 14 deletions(-) diff --git a/sigi/apps/eventos/jobs/daily/sincroniza_saberes.py b/sigi/apps/eventos/jobs/daily/sincroniza_saberes.py index 6dda84b..2e589c1 100644 --- a/sigi/apps/eventos/jobs/daily/sincroniza_saberes.py +++ b/sigi/apps/eventos/jobs/daily/sincroniza_saberes.py @@ -1,17 +1,23 @@ from django_extensions.management.jobs import DailyJob from django.db.models import Q from django.conf import settings +from django.forms.models import model_to_dict from django.utils import timezone +from django.utils.translation import gettext as _ +from sigi.apps.utils.management.jobs import JobReportMixin from sigi.apps.eventos.models import Evento -class Job(DailyJob): - help = "Sincroniza número de inscritos e aprovados com o Saberes." - - def execute(self): - print("Sincronizando número de inscritos e aprovados com o Saberes.") - print(f" Início: {timezone.localtime(): %d/%m/%Y %H:%M:%S}") +class Job(JobReportMixin, DailyJob): + help = _("Sincroniza número de inscritos e aprovados com o Saberes.") + report_data = [] + def do_job(self): + infos = [] + errors = [] + total_sinc = 0 + total_ok = 0 + total_erros = 0 trintadias = timezone.localtime() - timezone.timedelta(days=30) eventos = Evento.objects.exclude(moodle_courseid=None).filter( ( @@ -24,14 +30,44 @@ class Job(DailyJob): ) ) - print(f" total de eventos a sincronizar: {eventos.count()}") - - for e in eventos: + for evento in eventos: + initial = model_to_dict(evento) try: - e.sincroniza_saberes() + evento.sincroniza_saberes() + if model_to_dict(evento) != initial: + infos.append( + f"Evento {evento.nome} ({evento.id}) atualizado" + ) + total_sinc += 1 + else: + total_ok += 1 except Evento.SaberesSyncException as err: - print( - f" Erro ao sincronizar evento {e.id}, " - f"com a mensagem '{err.message}'" + errors.append( + _( + f"Erro ao sincronizar evento {evento.nome} " + f"({evento,id}), com a mensagem '{err.message}'" + ) ) - print(f" Término: {timezone.localtime(): %d/%m/%Y %H:%M:%S}") + total_erros += 1 + + self.report_data.append(_("ATUALIZAÇÕES")) + self.report_data.append("------------") + self.report_data.append("") + self.report_data.extend(infos) + self.report_data.append("") + + self.report_data.append(_("ERROS")) + self.report_data.append("-----") + self.report_data.append("") + self.report_data.extend(errors) + self.report_data.append("") + + self.report_data.append(_("RESUMO")) + self.report_data.append("------") + self.report_data.append("") + + self.report_data.append(f"* Eventos a sincronizar: {eventos.count()}") + self.report_data.append(f"* Eventos atualizados: {total_sinc}") + self.report_data.append(f"* Já estavam corretos: {total_ok}") + self.report_data.append(f"* Erros: {total_erros}") + self.report_data.append("")