|
@ -1,17 +1,23 @@ |
|
|
from django_extensions.management.jobs import DailyJob |
|
|
from django_extensions.management.jobs import DailyJob |
|
|
from django.db.models import Q |
|
|
from django.db.models import Q |
|
|
from django.conf import settings |
|
|
from django.conf import settings |
|
|
|
|
|
from django.forms.models import model_to_dict |
|
|
from django.utils import timezone |
|
|
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 |
|
|
from sigi.apps.eventos.models import Evento |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Job(DailyJob): |
|
|
class Job(JobReportMixin, DailyJob): |
|
|
help = "Sincroniza número de inscritos e aprovados com o Saberes." |
|
|
help = _("Sincroniza número de inscritos e aprovados com o Saberes.") |
|
|
|
|
|
report_data = [] |
|
|
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}") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def do_job(self): |
|
|
|
|
|
infos = [] |
|
|
|
|
|
errors = [] |
|
|
|
|
|
total_sinc = 0 |
|
|
|
|
|
total_ok = 0 |
|
|
|
|
|
total_erros = 0 |
|
|
trintadias = timezone.localtime() - timezone.timedelta(days=30) |
|
|
trintadias = timezone.localtime() - timezone.timedelta(days=30) |
|
|
eventos = Evento.objects.exclude(moodle_courseid=None).filter( |
|
|
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 evento in eventos: |
|
|
|
|
|
initial = model_to_dict(evento) |
|
|
for e in eventos: |
|
|
|
|
|
try: |
|
|
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: |
|
|
except Evento.SaberesSyncException as err: |
|
|
print( |
|
|
errors.append( |
|
|
f" Erro ao sincronizar evento {e.id}, " |
|
|
_( |
|
|
f"com a mensagem '{err.message}'" |
|
|
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("") |
|
|