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,
blank=True,
)
obs_pesquisa = models.TextField(
_("observações do pesquisador"), blank=True
)
obs_pesquisa = models.TextField(_("observações do pesquisador"), blank=True)
ult_alt_endereco = models.DateTimeField(
_("ú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)
@classmethod
def _mathnames(cls, nome, orgaos):
def _mathnames(cls, nome, orgaos, min_ratio=0.9):
for o, nome_canonico in orgaos:
ratio = SequenceMatcher(
None, to_ascii(nome).lower(), nome_canonico
).ratio()
if ratio > 0.9:
if ratio > min_ratio:
yield (o, ratio)
@classmethod
def get_semelhantes(cls, nome, orgaos=None):
def get_semelhantes(cls, nome, orgaos=None, min_ratio=0.9):
if orgaos is None:
orgaos = [
(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"))
]
return sorted(
cls._mathnames(nome, orgaos),
cls._mathnames(nome, orgaos, min_ratio),
key=lambda m: m[1],
reverse=True,
)
class Meta:

30
sigi/apps/convenios/models.py

@ -304,9 +304,7 @@ class Convenio(models.Model):
_("data de devolução da via"),
null=True,
blank=True,
help_text=_(
"Data de devolução da via do convênio à Câmara Municipal."
),
help_text=_("Data de devolução da via do convênio à Câmara Municipal."),
)
data_postagem_correio = models.DateField(
_("data postagem correio"),
@ -748,6 +746,13 @@ class Gescon(models.Model):
report_user = True
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:
self.add_message(
_(f"\tErro ao acessar {url}: {response.reason}")
@ -805,6 +810,16 @@ class Gescon(models.Model):
atualizados = 0
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(
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[
"inicioVigencia"
]
convenio.data_termino_vigencia = contrato[
"terminoVigencia"
]
convenio.data_termino_vigencia = contrato["terminoVigencia"]
convenio.data_pub_diario = contrato["publicacao"]
convenio.atualizacao_gescon = timezone.localtime()
convenio.erro_gescon = False
@ -951,6 +964,7 @@ class Gescon(models.Model):
.order_by()
.annotate(uf_sigla=F("municipio__uf__sigla"))
],
min_ratio=0,
)[0][0]
except Orgao.DoesNotExist:
# Encontrou 0: Vamos seguir sem órgao e tentar
@ -1035,9 +1049,7 @@ class Gescon(models.Model):
observacao_gescon=_(
"Importado integralmente do Gescon"
),
id_contrato_gescon=(
contrato["codTextoContrato"] or ""
),
id_contrato_gescon=(contrato["codTextoContrato"] or ""),
)
convenio.save()
novos += 1

10
sigi/apps/eventos/saberes.py

@ -71,9 +71,7 @@ class EventoSaberes(Moodle):
def get_inscritos(self):
if self.evento.moodle_courseid is None:
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:
@ -248,9 +246,7 @@ class EventoSaberes(Moodle):
settings.MOODLE_ORGAO_CUSTOMFIELD
]
municipio = (
p["dictcustomfields"][
settings.MOODLE_MUNICIPIO_CUSTOMFIELD
]
p["dictcustomfields"][settings.MOODLE_MUNICIPIO_CUSTOMFIELD]
if settings.MOODLE_MUNICIPIO_CUSTOMFIELD
in p["dictcustomfields"]
else p["city"] if "city" in p else ""
@ -259,7 +255,7 @@ class EventoSaberes(Moodle):
for nome in nomes_possiveis:
semelhantes = Orgao.get_semelhantes(nome, orgaos)
if len(semelhantes) > 0:
p["orgao"] = semelhantes[-1][0]
p["orgao"] = semelhantes[0][0]
break
if "orgao" not in p:
# 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