Browse Source

Moderniza cron do IBGE para usar RST e HTML no e-mail

pull/159/head
Sesostris Vieira 2 years ago
parent
commit
f87e22fe36
  1. 79
      sigi/apps/contatos/jobs/monthly/atualiza_ibge.py
  2. 61
      sigi/apps/contatos/templates/contatos/emails/report_atualiza_ibge.rst
  3. 10
      sigi/templates/emails/base_email.rst

79
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
]
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",
},
)
+ 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]
)
)
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)

61
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 %}

10
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 %}
Loading…
Cancel
Save