diff --git a/sigi/apps/contatos/jobs/monthly/atualiza_ibge.py b/sigi/apps/contatos/jobs/monthly/atualiza_ibge.py index 8925148..fced288 100644 --- a/sigi/apps/contatos/jobs/monthly/atualiza_ibge.py +++ b/sigi/apps/contatos/jobs/monthly/atualiza_ibge.py @@ -1,7 +1,10 @@ +import docutils.core from datetime import datetime from django_extensions.management.jobs import MonthlyJob from django.conf import settings from django.core.mail import mail_admins +from django.template.loader import render_to_string +from django.utils.translation import gettext as _ from ibge.localidades import Estados, Municipios from sigi.apps.contatos.models import ( UnidadeFederativa, @@ -12,7 +15,7 @@ from sigi.apps.contatos.models import ( class Job(MonthlyJob): - help = ( + help = _( "Atualiza Unidades Federativas, mesorregiões, microrregiões e " "municípios com dados do IBGE" ) @@ -33,7 +36,7 @@ class Job(MonthlyJob): ) self.atualiza_ufs() self.atualiza_municipios() - self.print_report() + self.report() print(f"Término: {datetime.now(): %d/%m/%Y %H:%M:%S}") def atualiza_ufs(self): @@ -145,53 +148,33 @@ class Job(MonthlyJob): sigi_mun.save() self.municipios_atualizados.append(sigi_mun) - def print_report(self): - report = ( - f"\t {len(self.uf_novas)} novas UFs criadas:\n" - + "\n".join( - [ - f"\t{uf.codigo_ibge}: {uf.sigla} - {uf.nome}" - for uf in self.uf_novas - ] - ) - + f"\t {len(self.uf_atualizadas)} UFs atualizadas:\n" - + "\n".join( - [ - f"\t{uf.codigo_ibge}: {uf.sigla} - {uf.nome}" - for uf in self.uf_atualizadas - ] - ) - + f"\t {len(self.municipios_novos)} novos municipios criados:\n" - + "\n".join( - [f"\t{m.codigo_ibge}: {m.nome}" for m in self.municipios_novos] - ) - + f"\t {len(self.municipios_atualizados)} municípios atualizados:\n" - + "\n".join( - [ - f"\t{m.codigo_ibge}: {m.nome}" - for m in self.municipios_atualizados - ] - ) - + f"\t {len(self.meso_novas)} novas mesorregiões:\n" - + "\n".join( - [f"\t{m.codigo_ibge}: {m.nome}" for m in self.meso_novas] - ) - + f"\t {len(self.meso_atualizadas)} mesorregiões atualizadas:\n" - + "\n".join( - [f"\t{m.codigo_ibge}: {m.nome}" for m in self.meso_atualizadas] - ) - + f"\t {len(self.micro_novas)} novas microrregiões:\n" - + "\n".join( - [f"\t{m.codigo_ibge}: {m.nome}" for m in self.micro_novas] - ) - + f"\t {len(self.micro_atualizadas)} microrregiões atualizadas:\n" - + "\n".join( - [f"\t{m.codigo_ibge}: {m.nome}" for m in self.micro_atualizadas] - ) + def report(self): + rst = render_to_string( + "contatos/emails/report_atualiza_ibge.rst", + { + "title": self.help, + "uf_novas": self.uf_novas, + "uf_atualizadas": self.uf_atualizadas, + "municipios_novos": self.municipios_novos, + "municipios_atualizados": self.municipios_atualizados, + "meso_novas": self.meso_novas, + "meso_atualizadas": self.meso_atualizadas, + "micro_novas": self.micro_novas, + "micro_atualizadas": self.micro_atualizadas, + }, + ) + html = docutils.core.publish_string( + rst, + writer_name="html5", + settings_overrides={ + "input_encoding": "unicode", + "output_encoding": "unicode", + }, ) - print(report) mail_admins( - "CRON - Atualização de dados do IBGE", - report, + subject=self.help, + message=rst, + html_message=html, fail_silently=True, ) + print(rst) diff --git a/sigi/apps/contatos/templates/contatos/emails/report_atualiza_ibge.rst b/sigi/apps/contatos/templates/contatos/emails/report_atualiza_ibge.rst new file mode 100644 index 0000000..e8bc363 --- /dev/null +++ b/sigi/apps/contatos/templates/contatos/emails/report_atualiza_ibge.rst @@ -0,0 +1,61 @@ +{% extends 'emails/base_email.rst' %} +{% load i18n %} + +{% block content %} +{% blocktrans with qtde=uf_novas|length%}{{ qtde }} novas UFs criadas:{% endblocktrans %} +------------------------------------------------------------------------------- + +{% for uf in uf_novas %} + * {{ uf.codigo_ibge }}: {{ uf.sigla }} - {{ uf.nome }} +{% endfor %} + +{% blocktrans with qtde=uf_atualizadas|length %}{{ qtde }} UFs atualizadas:{% endblocktrans %} +------------------------------------------------------------------------------- + +{% for uf in uf_atualizadas %} + * {{ uf.codigo_ibge }}: {{ uf.sigla }} - {{ uf.nome }} +{% endfor %} + +{% blocktrans with qtde=municipios_novos|length %}{{ qtde }} novos municipios criados:{% endblocktrans %} +------------------------------------------------------------------------------- + +{% for m in municipios_novos %} + * {{ m.codigo_ibge }}: {{ m.nome }} +{% endfor %} + +{% blocktrans with qtde=municipios_atualizados|length %}{{ qtde }} municípios atualizados:{% endblocktrans %} +------------------------------------------------------------------------------- + +{% for m in municipios_atualizados %} + * {{ m.codigo_ibge }}: {{ m.nome }} +{% endfor %} + +{% blocktrans with qtde=meso_novas|length %}{{ qtde }} novas mesorregiões:{% endblocktrans %} +------------------------------------------------------------------------------- + +{% for m in meso_novas %} + * {{ m.codigo_ibge }}: {{ m.nome }} +{% endfor %} + +{% blocktrans with qtde=meso_atualizadas|length %}{{ qtde }} mesorregiões atualizadas{% endblocktrans %} +------------------------------------------------------------------------------- + +{% for m in meso_atualizadas %} + * {{ m.codigo_ibge }}: {{ m.nome }} +{% endfor %} + +{% blocktrans with qtde=micro_novas|length %}{{ qtde }} novas microrregiões:{% endblocktrans %} +------------------------------------------------------------------------------- + +{% for m in micro_novas %} + * {{ m.codigo_ibge }}: {{ m.nome }} +{% endfor %} + +{% blocktrans with qtde=micro_atualizadas|length%}{{ qtde }} microrregiões atualizadas:{% endblocktrans %} +------------------------------------------------------------------------------- + +{% for m in micro_atualizadas %} + * {{ m.codigo_ibge }}: {{ m.nome }} +{% endfor %} + +{% endblock content %} diff --git a/sigi/templates/emails/base_email.rst b/sigi/templates/emails/base_email.rst new file mode 100644 index 0000000..fc03e92 --- /dev/null +++ b/sigi/templates/emails/base_email.rst @@ -0,0 +1,10 @@ +{% block title %} +{% for s in title %}={% endfor %} +{{ title }} +{% for s in title %}={% endfor %} +{% endblock title %} + + +{% block content %} +{% endblock content %} +