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 datetime import datetime
from django_extensions.management.jobs import MonthlyJob from django_extensions.management.jobs import MonthlyJob
from django.conf import settings from django.conf import settings
from django.core.mail import mail_admins 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 ibge.localidades import Estados, Municipios
from sigi.apps.contatos.models import ( from sigi.apps.contatos.models import (
UnidadeFederativa, UnidadeFederativa,
@ -12,7 +15,7 @@ from sigi.apps.contatos.models import (
class Job(MonthlyJob): class Job(MonthlyJob):
help = ( help = _(
"Atualiza Unidades Federativas, mesorregiões, microrregiões e " "Atualiza Unidades Federativas, mesorregiões, microrregiões e "
"municípios com dados do IBGE" "municípios com dados do IBGE"
) )
@ -33,7 +36,7 @@ class Job(MonthlyJob):
) )
self.atualiza_ufs() self.atualiza_ufs()
self.atualiza_municipios() self.atualiza_municipios()
self.print_report() self.report()
print(f"Término: {datetime.now(): %d/%m/%Y %H:%M:%S}") print(f"Término: {datetime.now(): %d/%m/%Y %H:%M:%S}")
def atualiza_ufs(self): def atualiza_ufs(self):
@ -145,53 +148,33 @@ class Job(MonthlyJob):
sigi_mun.save() sigi_mun.save()
self.municipios_atualizados.append(sigi_mun) self.municipios_atualizados.append(sigi_mun)
def print_report(self): def report(self):
report = ( rst = render_to_string(
f"\t {len(self.uf_novas)} novas UFs criadas:\n" "contatos/emails/report_atualiza_ibge.rst",
+ "\n".join( {
[ "title": self.help,
f"\t{uf.codigo_ibge}: {uf.sigla} - {uf.nome}" "uf_novas": self.uf_novas,
for uf in self.uf_novas "uf_atualizadas": self.uf_atualizadas,
] "municipios_novos": self.municipios_novos,
) "municipios_atualizados": self.municipios_atualizados,
+ f"\t {len(self.uf_atualizadas)} UFs atualizadas:\n" "meso_novas": self.meso_novas,
+ "\n".join( "meso_atualizadas": self.meso_atualizadas,
[ "micro_novas": self.micro_novas,
f"\t{uf.codigo_ibge}: {uf.sigla} - {uf.nome}" "micro_atualizadas": self.micro_atualizadas,
for uf in self.uf_atualizadas },
] )
) html = docutils.core.publish_string(
+ f"\t {len(self.municipios_novos)} novos municipios criados:\n" rst,
+ "\n".join( writer_name="html5",
[f"\t{m.codigo_ibge}: {m.nome}" for m in self.municipios_novos] settings_overrides={
) "input_encoding": "unicode",
+ f"\t {len(self.municipios_atualizados)} municípios atualizados:\n" "output_encoding": "unicode",
+ "\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( mail_admins(
"CRON - Atualização de dados do IBGE", subject=self.help,
report, message=rst,
html_message=html,
fail_silently=True, 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