Browse Source

Correção de bugs

pull/5/merge
Sesóstris Vieira 4 days ago
parent
commit
7e284d045f
  1. 13
      sigi/apps/casas/models.py
  2. 30
      sigi/apps/convenios/models.py
  3. 10
      sigi/apps/eventos/saberes.py
  4. 39
      sigi/apps/servicos/templates/servicos/emails/report_sincroniza_dns.rst
  5. 29
      sigi/apps/servicos/templates/servicos/emails/report_sincroniza_rancher.rst
  6. 11
      sigi/templates/emails/base_email.rst
  7. 17
      sigi/templates/emails/base_report.rst
  8. 17
      sigi/templates/emails/report_error.rst

13
sigi/apps/casas/models.py

@ -97,9 +97,7 @@ class Orgao(models.Model):
null=True, null=True,
blank=True, blank=True,
) )
obs_pesquisa = models.TextField( obs_pesquisa = models.TextField(_("observações do pesquisador"), blank=True)
_("observações do pesquisador"), blank=True
)
ult_alt_endereco = models.DateTimeField( ult_alt_endereco = models.DateTimeField(
_("última alteração do endereço"), null=True, blank=True, editable=True _("última alteração do endereço"), null=True, blank=True, editable=True
) )
@ -137,16 +135,16 @@ class Orgao(models.Model):
brasao_altura = models.SmallIntegerField(editable=False, null=True) brasao_altura = models.SmallIntegerField(editable=False, null=True)
@classmethod @classmethod
def _mathnames(cls, nome, orgaos): def _mathnames(cls, nome, orgaos, min_ratio=0.9):
for o, nome_canonico in orgaos: for o, nome_canonico in orgaos:
ratio = SequenceMatcher( ratio = SequenceMatcher(
None, to_ascii(nome).lower(), nome_canonico None, to_ascii(nome).lower(), nome_canonico
).ratio() ).ratio()
if ratio > 0.9: if ratio > min_ratio:
yield (o, ratio) yield (o, ratio)
@classmethod @classmethod
def get_semelhantes(cls, nome, orgaos=None): def get_semelhantes(cls, nome, orgaos=None, min_ratio=0.9):
if orgaos is None: if orgaos is None:
orgaos = [ orgaos = [
(o, f"{to_ascii(o.nome)} - {o.uf_sigla}".lower()) (o, f"{to_ascii(o.nome)} - {o.uf_sigla}".lower())
@ -155,8 +153,9 @@ class Orgao(models.Model):
.annotate(uf_sigla=models.F("municipio__uf__sigla")) .annotate(uf_sigla=models.F("municipio__uf__sigla"))
] ]
return sorted( return sorted(
cls._mathnames(nome, orgaos), cls._mathnames(nome, orgaos, min_ratio),
key=lambda m: m[1], key=lambda m: m[1],
reverse=True,
) )
class Meta: class Meta:

30
sigi/apps/convenios/models.py

@ -304,9 +304,7 @@ class Convenio(models.Model):
_("data de devolução da via"), _("data de devolução da via"),
null=True, null=True,
blank=True, blank=True,
help_text=_( help_text=_("Data de devolução da via do convênio à Câmara Municipal."),
"Data de devolução da via do convênio à Câmara Municipal."
),
) )
data_postagem_correio = models.DateField( data_postagem_correio = models.DateField(
_("data postagem correio"), _("data postagem correio"),
@ -748,6 +746,13 @@ class Gescon(models.Model):
report_user = True report_user = True
continue continue
if response.status_code != 200:
self.add_message(
f"\tErro na leitura dos dados de {url}: "
f"[{response.status_code}] {response.reason}"
)
continue
if not response.ok: if not response.ok:
self.add_message( self.add_message(
_(f"\tErro ao acessar {url}: {response.reason}") _(f"\tErro ao acessar {url}: {response.reason}")
@ -805,6 +810,16 @@ class Gescon(models.Model):
atualizados = 0 atualizados = 0
for contrato in nossos: for contrato in nossos:
if contrato["numero"] is None:
self.add_message(
_(
"\t* O contrato de id {id} subespécie {sub} foi "
"cadastrado no Gescon sem número e não será "
"importado."
).format(id=contrato["id"], sub=contrato["subEspecie"])
)
report_user = True
continue
numero = re.sub( numero = re.sub(
r"(\d{4})(\d{4})", r"\1/\2", contrato["numero"].zfill(8) r"(\d{4})(\d{4})", r"\1/\2", contrato["numero"].zfill(8)
) )
@ -895,9 +910,7 @@ class Gescon(models.Model):
convenio.data_retorno_assinatura = contrato[ convenio.data_retorno_assinatura = contrato[
"inicioVigencia" "inicioVigencia"
] ]
convenio.data_termino_vigencia = contrato[ convenio.data_termino_vigencia = contrato["terminoVigencia"]
"terminoVigencia"
]
convenio.data_pub_diario = contrato["publicacao"] convenio.data_pub_diario = contrato["publicacao"]
convenio.atualizacao_gescon = timezone.localtime() convenio.atualizacao_gescon = timezone.localtime()
convenio.erro_gescon = False convenio.erro_gescon = False
@ -951,6 +964,7 @@ class Gescon(models.Model):
.order_by() .order_by()
.annotate(uf_sigla=F("municipio__uf__sigla")) .annotate(uf_sigla=F("municipio__uf__sigla"))
], ],
min_ratio=0,
)[0][0] )[0][0]
except Orgao.DoesNotExist: except Orgao.DoesNotExist:
# Encontrou 0: Vamos seguir sem órgao e tentar # Encontrou 0: Vamos seguir sem órgao e tentar
@ -1035,9 +1049,7 @@ class Gescon(models.Model):
observacao_gescon=_( observacao_gescon=_(
"Importado integralmente do Gescon" "Importado integralmente do Gescon"
), ),
id_contrato_gescon=( id_contrato_gescon=(contrato["codTextoContrato"] or ""),
contrato["codTextoContrato"] or ""
),
) )
convenio.save() convenio.save()
novos += 1 novos += 1

10
sigi/apps/eventos/saberes.py

@ -71,9 +71,7 @@ class EventoSaberes(Moodle):
def get_inscritos(self): def get_inscritos(self):
if self.evento.moodle_courseid is None: if self.evento.moodle_courseid is None:
raise SaberesSyncException( raise SaberesSyncException(
_( _(f"O evento {self.evento} não tem curso associado no Saberes"),
f"O evento {self.evento} não tem curso associado no Saberes"
),
) )
if self._inscritos is None: if self._inscritos is None:
@ -248,9 +246,7 @@ class EventoSaberes(Moodle):
settings.MOODLE_ORGAO_CUSTOMFIELD settings.MOODLE_ORGAO_CUSTOMFIELD
] ]
municipio = ( municipio = (
p["dictcustomfields"][ p["dictcustomfields"][settings.MOODLE_MUNICIPIO_CUSTOMFIELD]
settings.MOODLE_MUNICIPIO_CUSTOMFIELD
]
if settings.MOODLE_MUNICIPIO_CUSTOMFIELD if settings.MOODLE_MUNICIPIO_CUSTOMFIELD
in p["dictcustomfields"] in p["dictcustomfields"]
else p["city"] if "city" in p else "" else p["city"] if "city" in p else ""
@ -259,7 +255,7 @@ class EventoSaberes(Moodle):
for nome in nomes_possiveis: for nome in nomes_possiveis:
semelhantes = Orgao.get_semelhantes(nome, orgaos) semelhantes = Orgao.get_semelhantes(nome, orgaos)
if len(semelhantes) > 0: if len(semelhantes) > 0:
p["orgao"] = semelhantes[-1][0] p["orgao"] = semelhantes[0][0]
break break
if "orgao" not in p: if "orgao" not in p:
# Buscar por sigla # Buscar por sigla

39
sigi/apps/servicos/templates/servicos/emails/report_sincroniza_dns.rst

@ -0,0 +1,39 @@
{% extends 'emails/base_report.rst' %}
{% load i18n %}
{% block content %}
{% for uf, dados in report_data.items %}
{% if dados.erros or dados.infos or dados.sumario.total > 0 or dados.sumario.novos > 0 or dados.sumario.atualizados > 0 or dados.sumario.desativados > 0 or dados.sumario.ignorados > 0 %}
**{{ uf|upper }}**
{% for x in uf|length %}={% endfor %}====
{% if dados.sumario.total > 0 or dados.sumario.novos > 0 or dados.sumario.atualizados > 0 or dados.sumario.desativados > 0 or dados.sumario.ignorados > 0%}
**{% trans "SUMÁRIO" %}:**
- Total de registros no DNS: {{ dados.sumario.total }}
- Registros criados no SIGI: {{ dados.sumario.novos }}
- Registros atualizados no SIGI: {{ dados.sumario.atualizados }}
- Registros desativados no SIGI: {{ dados.sumario.desativados }}
- Registros do DNS ignorados: {{ dados.sumario.ignorados }}
{% endif %}
{% if dados.erros %}
**{% trans "ERROS" %}:**
{% for m in dados.erros %}
* {{ m }}
{% endfor %}
{% endif %}
{% if dados.infos %}
**{% trans "INFORMAÇÕES ADICIONAIS" %}:**
{% for m in dados.infos %}
* {{ m }}
{% endfor %}
{% endif %}
{% endif %}
{% endfor %}
{% endblock content %}

29
sigi/apps/servicos/templates/servicos/emails/report_sincroniza_rancher.rst

@ -0,0 +1,29 @@
{% extends 'emails/base_report.rst' %}
{% load i18n %}
{% block content %}
**{% trans "ERROS ENCONTRADOS" %}**
=====================
{% for tipo, mensagens in report_data.erros.items %}
**{{ tipo.nome|upper }} - {{ tipo.sigla|upper }}**
{% for m in mensagens %}
* {{ m }}
{% endfor %}
{% empty %}
*{% trans "Nenhum erro encontrado" %}*
{% endfor %}
**{% trans "INFORMAÇÕES ADICIONAIS" %}**
==========================
{% for tipo, mensagens in report_data.infos.items %}
{{ tipo.nome|upper }} - {{ tipo.sigla|upper }}
{% for m in mensagens %}
* {{ m }}
{% endfor %}
{% empty %}
*{% trans "Nenhuma informação adicional gerada" %}*
{% endfor %}
{% endblock content %}

11
sigi/templates/emails/base_email.rst

@ -0,0 +1,11 @@
{% block title %}
{% for s in title %}={% endfor %}
{{ title }}
{% for s in title %}={% endfor %}
{% endblock title %}
{% block content %}
{% endblock content %}

17
sigi/templates/emails/base_report.rst

@ -0,0 +1,17 @@
{% extends 'emails/base_email.rst' %}
{% load i18n %}
{% block title %}
{{ block.super }}
**{% trans "Início:" %} {{ start_time|date:"SHORT_DATETIME_FORMAT" }}**
**{% trans "Término:" %} {{ end_time|date:"SHORT_DATETIME_FORMAT" }}**
{% endblock %}
{% block content %}
{% trans "RESULTADO" %}
=========
{% for row in report_data %}{{ row }}
{% endfor %}
{% endblock content %}

17
sigi/templates/emails/report_error.rst

@ -0,0 +1,17 @@
{% extends 'emails/base_email.rst' %}
{% load i18n %}
{% block content %}
{% blocktrans %}UM ERRO OCORREU NA EXECUÇÃO DA TAREFA{% endblocktrans %}
{% trans "VERIFIQUE O LOG DO SIGI PARA MAIORES DETALHES" %}
* {% trans "Data/hora de execução" %}: {% now 'SHORT_DATETIME_FORMAT' %}
::{% autoescape off %}{% for error_row in traceback %}
{{ error_row }}
{% endfor %}
{% endautoescape %}
{% endblock content %}
Loading…
Cancel
Save