From 0c7a26ab5fd218d7923db27eeee2f48de7f5f660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Cantu=C3=A1ria?= Date: Mon, 20 Jul 2020 12:59:18 -0300 Subject: [PATCH] =?UTF-8?q?HOT-FIX:=20Verifica=20existencia=20de=20tramita?= =?UTF-8?q?=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/relatorios/views.py | 12 ++++--- sapl/sessao/views.py | 78 +++++++++++++++++----------------------- 2 files changed, 39 insertions(+), 51 deletions(-) diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 7112e46df..ccbb4276c 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -593,16 +593,17 @@ def get_sessao_plenaria(sessao, casa): # Lista das matérias do Expediente, incluindo o resultado das votacoes lst_expediente_materia = [] - for expediente_materia in ExpedienteMateria.objects.filter(sessao_plenaria=sessao): + for expediente_materia in ExpedienteMateria.objects.select_related("materia").filter(sessao_plenaria=sessao): # seleciona os detalhes de uma matéria materia = expediente_materia.materia + materia_em_tramitacao = materia.materiaemtramitacao_set.first() + dic_expediente_materia = { "num_ordem": expediente_materia.numero_ordem, - "id_materia": "{} {} {}/{}".format(materia.tipo.sigla, materia.tipo.descricao, str(materia.numero), - str(materia.ano)), + "id_materia": f"{materia.tipo.sigla} {materia.tipo.descricao} {str(materia.numero)}/{str(materia.ano)}", "des_numeracao": ' ', "des_turno": get_turno(materia)[0], - "situacao": materia.materiaemtramitacao_set.first().tramitacao.status, + "situacao": materia_em_tramitacao.tramitacao.status if materia_em_tramitacao else _("Não informada"), "txt_ementa": str(materia.ementa), "materia_observacao": materia.observacao, "ordem_observacao": expediente_materia.observacao, @@ -701,6 +702,7 @@ def get_sessao_plenaria(sessao, casa): if numeracao: dic_votacao["des_numeracao"] = (str(numeracao.numero_materia) + '/' + str(numeracao.ano_materia)) + materia_em_tramitacao = materia.materiaemtramitacao_set.first() dic_votacao.update({ "des_turno": get_turno(materia)[0], # https://github.com/interlegis/sapl/issues/1009 @@ -708,7 +710,7 @@ def get_sessao_plenaria(sessao, casa): "materia_observacao": materia.observacao, "ordem_observacao": html.unescape(votacao.observacao), "nom_autor": '', - "situacao": materia.materiaemtramitacao_set.first().tramitacao.status + "situacao": materia_em_tramitacao.tramitacao.status if materia_em_tramitacao else _("Não informada") }) autoria = materia.autoria_set.all() diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index b1e35d607..026f9a2fb 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -202,60 +202,46 @@ def customize_link_materia(context, pk, has_permission, is_expediente): for i, row in enumerate(context['rows']): materia = context['object_list'][i].materia obj = context['object_list'][i] - url_materia = reverse('sapl.materia:materialegislativa_detail', - kwargs={'pk': materia.id}) - numeracao = materia.numeracao_set.first() - autoria = materia.autoria_set.filter( - primeiro_autor=True).first() - autor = autoria.autor if autoria else None - num_protocolo = materia.numero_protocolo + url_materia = reverse('sapl.materia:materialegislativa_detail', kwargs={'pk': materia.id}) + numeracao = materia.numeracao_set.first() if materia.numeracao_set.first() else "-" + autoria = materia.autoria_set.filter(primeiro_autor=True).first() + autor = autoria.autor if autoria else "-" + num_protocolo = materia.numero_protocolo if materia.numero_protocolo else "-" data_inicio_sessao = SessaoPlenaria.objects.get(id=pk).data_inicio - tramitacao = Tramitacao.objects.filter(materia=materia, - turno__isnull=False, - data_tramitacao__lte=data_inicio_sessao - ).exclude(turno__exact='' - ).select_related( - 'materia', - 'status', - 'materia__tipo').order_by( - '-data_tramitacao' - ).first() - turno = ' ' + tramitacao = Tramitacao.objects\ + .select_related('materia', 'status', 'materia__tipo')\ + .filter(materia=materia, turno__isnull=False, data_tramitacao__lte=data_inicio_sessao)\ + .exclude(turno__exact='')\ + .order_by('-data_tramitacao')\ + .first() + turno = '-' if tramitacao: for t in Tramitacao.TURNO_CHOICES: if t[0] == tramitacao.turno: turno = t[1] break - situacao = MateriaEmTramitacao.objects.select_related("materia", "tramitacao")\ - .filter(materia=materia).first().tramitacao.status - - title_materia = """%s
- Processo: %s
- Autor: %s
- Protocolo: %s
- Turno: %s
- Situação: %s
- """ % (obj.materia.id, - url_materia, - row[1][0], - numeracao if numeracao else '', - autor if autor else '', - num_protocolo if num_protocolo else '', - turno, - situacao if situacao else '') - + materia_em_tramitacao = MateriaEmTramitacao.objects\ + .select_related("materia", "tramitacao")\ + .filter(materia=materia)\ + .first() + situacao = materia_em_tramitacao.tramitacao.status if materia_em_tramitacao else '-' + + title_materia = f"""{row[1][0]}
+ Processo: {numeracao}
+ Autor: {autor}
+ Protocolo: {num_protocolo}
+ Turno: {turno}
+ Situação: {situacao}
+ """ # Na linha abaixo, o segundo argumento é None para não colocar # url em toda a string de title_materia context['rows'][i][1] = (title_materia, None) - exist_resultado = obj.registrovotacao_set.filter( - materia=obj.materia).exists() - exist_retirada = obj.retiradapauta_set.filter( - materia=obj.materia).exists() - exist_leitura = obj.registroleitura_set.filter( - materia=obj.materia).exists() + exist_resultado = obj.registrovotacao_set.filter(materia=obj.materia).exists() + exist_retirada = obj.retiradapauta_set.filter(materia=obj.materia).exists() + exist_leitura = obj.registroleitura_set.filter(materia=obj.materia).exists() if (obj.tipo_votacao != 4 and not exist_resultado and not exist_retirada) or\ (obj.tipo_votacao == 4 and not exist_leitura): @@ -1726,13 +1712,13 @@ def get_materias_expediente(sessao_plenaria): resultado = _('Matéria lida') if m.tipo_votacao == 4 else _('Matéria não votada') resultado_observacao = _(' ') - + materia_em_tramitacao = m.materia.materiaemtramitacao_set.first() materias_expediente.append({ 'ementa': m.materia.ementa, 'titulo': m.materia, 'numero': m.numero_ordem, 'turno': get_turno(tramitacao.turno) if tramitacao else None, - 'situacao': m.materia.materiaemtramitacao_set.first().tramitacao.status, + 'situacao': materia_em_tramitacao.tramitacao.status if materia_em_tramitacao else _("Não informada"), 'resultado': resultado, 'resultado_observacao': resultado_observacao, 'autor': [str(x.autor) for x in Autoria.objects.select_related("autor").filter(materia_id=m.materia_id)], @@ -1846,14 +1832,14 @@ def get_materias_ordem_do_dia(sessao_plenaria): voto_nao = " Não Informado" voto_abstencoes = " Não Informado" - + materia_em_tramitacao = o.materia.materiaemtramitacao_set.first() materias_ordem.append({ 'ementa': o.materia.ementa, 'ementa_observacao': o.observacao, 'titulo': o.materia, 'numero': o.numero_ordem, 'turno': get_turno(tramitacao.turno) if tramitacao else None, - 'situacao': o.materia.materiaemtramitacao_set.first().tramitacao.status, + 'situacao': materia_em_tramitacao.tramitacao.status if materia_em_tramitacao else _("Não informada"), 'resultado': resultado, 'resultado_observacao': resultado_observacao, 'autor': [str(x.autor) for x in Autoria.objects.select_related("autor").filter(materia_id=o.materia_id)],