From 12847db6dc247fc9dbb7c705320d85b704e964e2 Mon Sep 17 00:00:00 2001 From: Gustavo274 <51173319+Gustavo274@users.noreply.github.com> Date: Fri, 9 Jul 2021 15:48:01 -0300 Subject: [PATCH] Conserto do OsTicket #986795 (#3424) Co-authored-by: Gustavo274 --- sapl/relatorios/views.py | 182 ++++++++++++++++++++++++--------------- sapl/sessao/views.py | 86 +++++++++++------- 2 files changed, 168 insertions(+), 100 deletions(-) diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 6b1f5b114..2cf849071 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -112,7 +112,7 @@ def get_materias(mats): for materia in mats: dic = {} dic['titulo'] = materia.tipo.sigla + " " + materia.tipo.descricao \ - + " " + str(materia.numero) + "/" + str(materia.ano) + + " " + str(materia.numero) + "/" + str(materia.ano) dic['txt_ementa'] = materia.ementa dic['nom_autor'] = ', '.join( @@ -535,7 +535,8 @@ def get_sessao_plenaria(sessao, casa): for composicao in IntegranteMesa.objects.select_related('parlamentar', 'cargo')\ .filter(sessao_plenaria=sessao)\ .order_by('cargo_id'): - partido_sigla = Filiacao.objects.filter(parlamentar=composicao.parlamentar).first() + partido_sigla = Filiacao.objects.filter( + parlamentar=composicao.parlamentar).first() sigla = '' if not partido_sigla else partido_sigla.partido.sigla lst_mesa.append({ 'nom_parlamentar': composicao.parlamentar.nome_parlamentar, @@ -545,7 +546,8 @@ def get_sessao_plenaria(sessao, casa): # Lista de presença na sessão lst_presenca_sessao = [] - presenca = SessaoPlenariaPresenca.objects.filter(sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar') + presenca = SessaoPlenariaPresenca.objects.filter( + sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar') for parlamentar in [p.parlamentar for p in presenca]: lst_presenca_sessao.append({ "nom_parlamentar": parlamentar.nome_parlamentar, @@ -554,7 +556,8 @@ def get_sessao_plenaria(sessao, casa): # Lista de ausencias na sessão lst_ausencia_sessao = [] - ausencia = JustificativaAusencia.objects.filter(sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar') + ausencia = JustificativaAusencia.objects.filter( + sessao_plenaria=sessao).order_by('parlamentar__nome_parlamentar') for ausente in ausencia: lst_ausencia_sessao.append({ "parlamentar": ausente.parlamentar, @@ -564,7 +567,8 @@ def get_sessao_plenaria(sessao, casa): # Exibe os Expedientes lst_expedientes = [] - expedientes = ExpedienteSessao.objects.filter(sessao_plenaria=sessao).order_by('tipo__nome') + expedientes = ExpedienteSessao.objects.filter( + sessao_plenaria=sessao).order_by('tipo__nome') for e in expedientes: conteudo = e.conteudo if not is_empty(conteudo): @@ -572,9 +576,11 @@ def get_sessao_plenaria(sessao, casa): # https://github.com/interlegis/sapl/issues/1046 conteudo = re.sub('style=".*?"', '', conteudo) conteudo = re.sub('class=".*?"', '', conteudo) - conteudo = re.sub('align=".*?"', '', conteudo) # OSTicket Ticket #796450 + # OSTicket Ticket #796450 + conteudo = re.sub('align=".*?"', '', conteudo) conteudo = re.sub('', '

', conteudo) - conteudo = re.sub('', '
', conteudo) # OSTicket Ticket #796450 + # OSTicket Ticket #796450 + conteudo = re.sub('', '
', conteudo) conteudo = html.unescape(conteudo) # escape special character '&' @@ -612,12 +618,15 @@ def get_sessao_plenaria(sessao, casa): "votacao_observacao": ' ' } - numeracao = Numeracao.objects.filter(materia=expediente_materia.materia).first() + numeracao = Numeracao.objects.filter( + materia=expediente_materia.materia).first() if numeracao: - dic_expediente_materia["des_numeracao"] = (str(numeracao.numero_materia) + '/' + str(numeracao.ano_materia)) + dic_expediente_materia["des_numeracao"] = ( + str(numeracao.numero_materia) + '/' + str(numeracao.ano_materia)) autoria = materia.autoria_set.all() - dic_expediente_materia['num_autores'] = 'Autores' if len(autoria) > 1 else 'Autor' + dic_expediente_materia['num_autores'] = 'Autores' if len( + autoria) > 1 else 'Autor' if autoria: for a in autoria: if a.autor.nome: @@ -630,14 +639,19 @@ def get_sessao_plenaria(sessao, casa): materia=expediente_materia.materia).first() rp = expediente_materia.retiradapauta_set.filter( materia=expediente_materia.materia).first() + rl = expediente_materia.registroleitura_set.filter( + materia=expediente_materia.materia).first() if rv: resultado = rv.tipo_resultado_votacao.nome resultado_observacao = rv.observacao elif rp: resultado = rp.tipo_de_retirada.descricao resultado_observacao = rp.observacao + elif rl: + resultado = _('Matéria lida') + resultado_observacao = rl.observacao else: - resultado = _('Matéria lida') \ + resultado = _('Matéria não lida') \ if expediente_materia.tipo_votacao == 4 \ else _('Matéria não votada') resultado_observacao = _(' ') @@ -652,7 +666,7 @@ def get_sessao_plenaria(sessao, casa): # Lista dos votos nominais das matérias do Expediente lst_expediente_materia_vot_nom = [] - materias_expediente_votacao_nominal = ExpedienteMateria.objects.filter(sessao_plenaria=sessao,tipo_votacao=2)\ + materias_expediente_votacao_nominal = ExpedienteMateria.objects.filter(sessao_plenaria=sessao, tipo_votacao=2)\ .order_by('-materia') for mevn in materias_expediente_votacao_nominal: @@ -672,8 +686,10 @@ def get_sessao_plenaria(sessao, casa): # Lista dos oradores do Expediente lst_oradores_expediente = [] for orador_expediente in OradorExpediente.objects.filter(sessao_plenaria=sessao).order_by('numero_ordem'): - parlamentar = Parlamentar.objects.get(id=orador_expediente.parlamentar.id) - partido_sigla = Filiacao.objects.filter(parlamentar=parlamentar).first() + parlamentar = Parlamentar.objects.get( + id=orador_expediente.parlamentar.id) + partido_sigla = Filiacao.objects.filter( + parlamentar=parlamentar).first() lst_oradores_expediente.append({ "num_ordem": orador_expediente.numero_ordem, "nom_parlamentar": parlamentar.nome_parlamentar, @@ -709,7 +725,8 @@ def get_sessao_plenaria(sessao, casa): numeracao = materia.numeracao_set.first() if numeracao: - dic_votacao["des_numeracao"] = (str(numeracao.numero_materia) + '/' + str(numeracao.ano_materia)) + dic_votacao["des_numeracao"] = ( + str(numeracao.numero_materia) + '/' + str(numeracao.ano_materia)) materia_em_tramitacao = materia.materiaemtramitacao_set.first() dic_votacao.update({ @@ -736,14 +753,19 @@ def get_sessao_plenaria(sessao, casa): materia=votacao.materia).first() rp = votacao.retiradapauta_set.filter( materia=votacao.materia).first() + rl = votacao.registroleitura_set.filter( + materia=votacao.materia).first() if rv: resultado = rv.tipo_resultado_votacao.nome resultado_observacao = rv.observacao elif rp: resultado = rp.tipo_de_retirada.descricao resultado_observacao = rp.observacao + elif rl: + resultado = _('Matéria lida') + resultado_observacao = rl.observacao else: - resultado = _('Matéria lida') if \ + resultado = _('Matéria não lida') if \ votacao.tipo_votacao == 4 else _('Matéria não votada') resultado_observacao = _(' ') @@ -777,11 +799,14 @@ def get_sessao_plenaria(sessao, casa): # Lista dos oradores da Ordem do Dia lst_oradores_ordemdia = [] - oradores_ordem_dia = OradorOrdemDia.objects.filter(sessao_plenaria=sessao).order_by('numero_ordem') + oradores_ordem_dia = OradorOrdemDia.objects.filter( + sessao_plenaria=sessao).order_by('numero_ordem') for orador_ordemdia in oradores_ordem_dia: - parlamentar_orador = Parlamentar.objects.get(id=orador_ordemdia.parlamentar.id) - sigla_partido = Filiacao.objects.filter(parlamentar=parlamentar_orador).first() + parlamentar_orador = Parlamentar.objects.get( + id=orador_ordemdia.parlamentar.id) + sigla_partido = Filiacao.objects.filter( + parlamentar=parlamentar_orador).first() lst_oradores_ordemdia.append({ "num_ordem": orador_ordemdia.numero_ordem, @@ -794,7 +819,8 @@ def get_sessao_plenaria(sessao, casa): lst_oradores = [] for orador in Orador.objects.select_related('parlamentar').filter(sessao_plenaria=sessao).order_by('numero_ordem'): parlamentar = orador.parlamentar - partido_sigla = orador.parlamentar.filiacao_set.select_related('partido', 'parlamentar').first() + partido_sigla = orador.parlamentar.filiacao_set.select_related( + 'partido', 'parlamentar').first() lst_oradores.append({ "num_ordem": orador.numero_ordem, "nom_parlamentar": parlamentar.nome_parlamentar, @@ -841,7 +867,8 @@ def get_sessao_plenaria(sessao, casa): def get_turno(materia): descricao_turno = '' descricao_tramitacao = '' - tramitacoes = materia.tramitacao_set.order_by('-data_tramitacao', '-id').all() + tramitacoes = materia.tramitacao_set.order_by( + '-data_tramitacao', '-id').all() tramitacoes_turno = tramitacoes.exclude(turno="") if tramitacoes: @@ -850,7 +877,8 @@ def get_turno(materia): if t[0] == tramitacoes_turno.first().turno: descricao_turno = str(t[1]) break - descricao_tramitacao = tramitacoes.first().status.descricao if tramitacoes.first().status else 'Não informada' + descricao_tramitacao = tramitacoes.first( + ).status.descricao if tramitacoes.first().status else 'Não informada' return descricao_turno, descricao_tramitacao @@ -936,10 +964,10 @@ def get_protocolos(prots): ts = timezone.localtime(protocolo.timestamp) if protocolo.timestamp: dic['data'] = ts.strftime("%d/%m/%Y") + ' - Horário:' + \ - ts.strftime("%H:%m") + ts.strftime("%H:%m") else: dic['data'] = protocolo.data.strftime("%d/%m/%Y") + ' - Horário:' \ - + protocolo.hora.strftime("%H:%m") + + protocolo.hora.strftime("%H:%m") dic['txt_assunto'] = protocolo.assunto_ementa @@ -1030,7 +1058,7 @@ def relatorio_etiqueta_protocolo(request, nro, ano): protocolo = Protocolo.objects.filter(numero=nro, ano=ano) - m = MateriaLegislativa.objects.filter(numero_protocolo=nro,ano=ano) + m = MateriaLegislativa.objects.filter(numero_protocolo=nro, ano=ano) protocolo_data = get_etiqueta_protocolos(protocolo) @@ -1067,7 +1095,7 @@ def get_etiqueta_protocolos(prots): for materia in MateriaLegislativa.objects.filter( numero_protocolo=p.numero, ano=p.ano): dic['num_materia'] = materia.tipo.sigla + ' ' + \ - str(materia.numero) + '/' + str(materia.ano) + str(materia.numero) + '/' + str(materia.ano) dic['natureza'] = '' if p.tipo_processo == 0: @@ -1079,7 +1107,7 @@ def get_etiqueta_protocolos(prots): for documento in DocumentoAdministrativo.objects.filter( protocolo=p): dic['num_documento'] = documento.tipo.sigla + ' ' + \ - str(documento.numero) + '/' + str(documento.ano) + str(documento.numero) + '/' + str(documento.ano) dic['ident_processo'] = dic['num_materia'] or dic['num_documento'] @@ -1145,7 +1173,7 @@ def get_pauta_sessao(sessao, casa): dic_expediente_materia = {} dic_expediente_materia["tipo_materia"] = materia.tipo.sigla + \ - ' - ' + materia.tipo.descricao + ' - ' + materia.tipo.descricao dic_expediente_materia["num_ordem"] = str( expediente_materia.numero_ordem) dic_expediente_materia["id_materia"] = str( @@ -1189,7 +1217,7 @@ def get_pauta_sessao(sessao, casa): id=votacao.materia.id).first() dic_votacao = {} dic_votacao["tipo_materia"] = materia.tipo.sigla + \ - ' - ' + materia.tipo.descricao + ' - ' + materia.tipo.descricao dic_votacao["num_ordem"] = votacao.numero_ordem dic_votacao["id_materia"] = str( materia.numero) + "/" + str(materia.ano) @@ -1231,9 +1259,11 @@ def get_pauta_sessao(sessao, casa): # https://github.com/interlegis/sapl/issues/1046 conteudo = re.sub('style=".*?"', '', conteudo) conteudo = re.sub('class=".*?"', '', conteudo) - conteudo = re.sub('align=".*?"', '', conteudo) # OSTicket Ticket #796450 + # OSTicket Ticket #796450 + conteudo = re.sub('align=".*?"', '', conteudo) conteudo = re.sub('', '

', conteudo) - conteudo = re.sub('', '
', conteudo) # OSTicket Ticket #796450 + # OSTicket Ticket #796450 + conteudo = re.sub('', '
', conteudo) conteudo = html.unescape(conteudo) # escape special character '&' @@ -1263,7 +1293,8 @@ def make_pdf(base_url, main_template, header_template, main_css='', header_css=' # Template of header html = HTML(base_url=base_url, string=header_template) - header = html.render(stylesheets=[CSS(string='@page {size:A4; margin:1cm;}')]) + header = html.render( + stylesheets=[CSS(string='@page {size:A4; margin:1cm;}')]) header_page = header.pages[0] header_body = get_page_body(header_page._page_box.all_children()) @@ -1301,12 +1332,15 @@ def resumo_ata_pdf(request, pk): context.update({'object': sessao_plenaria}) context.update({'data': dt.today().strftime('%d/%m/%Y')}) context.update({'rodape': rodape}) - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} + header_context = {"casa": casa, + 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL} html_template = render_to_string('relatorios/relatorio_ata.html', context) - html_header = render_to_string('relatorios/header_ata.html', header_context) + html_header = render_to_string( + 'relatorios/header_ata.html', header_context) - pdf_file = make_pdf(base_url=base_url, main_template=html_template, header_template=html_header) + pdf_file = make_pdf( + base_url=base_url, main_template=html_template, header_template=html_header) response = HttpResponse(content_type='application/pdf;') response['Content-Disposition'] = 'inline; filename=relatorio.pdf' @@ -1324,12 +1358,15 @@ def cria_relatorio(request, context, html_string, header_info=""): context.update({'data': dt.today().strftime('%d/%m/%Y')}) context.update({'rodape': rodape}) - header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL, 'info': header_info} + header_context = {"casa": casa, 'logotipo': casa.logotipo, + 'MEDIA_URL': MEDIA_URL, 'info': header_info} html_template = render_to_string(html_string, context) - html_header = render_to_string('relatorios/header_ata.html', header_context) + html_header = render_to_string( + 'relatorios/header_ata.html', header_context) - pdf_file = make_pdf(base_url=base_url, main_template=html_template, header_template=html_header) + pdf_file = make_pdf( + base_url=base_url, main_template=html_template, header_template=html_header) response = HttpResponse(content_type='application/pdf;') response['Content-Disposition'] = 'inline; filename=relatorio.pdf' @@ -1409,7 +1446,7 @@ def relatorio_pauta_sessao_weasy(obj, request, context): return cria_relatorio(request, context, 'relatorios/relatorio_pauta_sessao.html', info) -def relatorio_sessao_plenaria_pdf(request, pk): +def relatorio_sessao_plenaria_pdf(request, pk): base_url = request.build_absolute_uri() logger = logging.getLogger(__name__) username = request.user.username @@ -1463,24 +1500,24 @@ def relatorio_sessao_plenaria_pdf(request, pk): } context = { - "inf_basicas_dic": inf_basicas_dic, - "cont_mult_dic": cont_mult_dic, - "lst_mesa": lst_mesa, - "lst_expediente_materia_vot_nom": lst_expediente_materia_vot_nom, - "lst_presenca_sessao": lst_presenca_sessao, - "lst_ausencia_sessao": lst_ausencia_sessao, - "lst_expedientes": lst_expedientes, - "lst_expediente_materia": lst_expediente_materia, - "lst_oradores_expediente": lst_oradores_expediente, - "lst_presenca_ordem_dia": lst_presenca_ordem_dia, - "lst_votacao": lst_votacao, - "lst_oradores_ordemdia": lst_oradores_ordemdia, - "lst_votacao_vot_nom": lst_votacao_vot_nom, - "lst_oradores": lst_oradores, - "lst_ocorrencias": lst_ocorrencias, - "rodape": rodape, - "data": dt.today().strftime('%d/%m/%Y') - } + "inf_basicas_dic": inf_basicas_dic, + "cont_mult_dic": cont_mult_dic, + "lst_mesa": lst_mesa, + "lst_expediente_materia_vot_nom": lst_expediente_materia_vot_nom, + "lst_presenca_sessao": lst_presenca_sessao, + "lst_ausencia_sessao": lst_ausencia_sessao, + "lst_expedientes": lst_expedientes, + "lst_expediente_materia": lst_expediente_materia, + "lst_oradores_expediente": lst_oradores_expediente, + "lst_presenca_ordem_dia": lst_presenca_ordem_dia, + "lst_votacao": lst_votacao, + "lst_oradores_ordemdia": lst_oradores_ordemdia, + "lst_votacao_vot_nom": lst_votacao_vot_nom, + "lst_oradores": lst_oradores, + "lst_ocorrencias": lst_ocorrencias, + "rodape": rodape, + "data": dt.today().strftime('%d/%m/%Y') + } ordenacao = ResumoOrdenacao.objects.get_or_create()[0] try: @@ -1520,7 +1557,8 @@ def relatorio_sessao_plenaria_pdf(request, pk): 'decimo_quarto_ordenacao': 'ocorrencias_sessao.html' }) - html_template = render_to_string('relatorios/relatorio_sessao_plenaria.html', context) + html_template = render_to_string( + 'relatorios/relatorio_sessao_plenaria.html', context) info = "Resumo da {}ª Reunião {} \ da {}ª Sessão Legislativa da {} \ @@ -1535,7 +1573,8 @@ def relatorio_sessao_plenaria_pdf(request, pk): "logotipo": casa.logotipo, "info": info}) - pdf_file = make_pdf(base_url=base_url, main_template=html_template, header_template=html_header) + pdf_file = make_pdf( + base_url=base_url, main_template=html_template, header_template=html_header) response = HttpResponse(content_type='application/pdf;') response['Content-Disposition'] = 'inline; filename=relatorio.pdf' @@ -1548,32 +1587,35 @@ def relatorio_sessao_plenaria_pdf(request, pk): def gera_etiqueta_ml(materia_legislativa, base_url): confg = ConfigEtiquetaMateriaLegislativa.objects.first() - ml_info = unidecode.unidecode("{}/{}-{}".format(materia_legislativa.numero, - materia_legislativa.ano, - materia_legislativa.tipo.sigla)) + ml_info = unidecode.unidecode("{}/{}-{}".format(materia_legislativa.numero, + materia_legislativa.ano, + materia_legislativa.tipo.sigla)) base64_data = create_barcode(ml_info, 100, 500) barcode = 'data:image/png;base64,{0}'.format(base64_data) max_ementa_size = 240 ementa = materia_legislativa.ementa - ementa = ementa if len(ementa) < max_ementa_size else ementa[:max_ementa_size]+"..." + ementa = ementa if len( + ementa) < max_ementa_size else ementa[:max_ementa_size]+"..." context = { 'numero': materia_legislativa.numero, 'ano': materia_legislativa.ano, 'tipo': materia_legislativa.tipo, - 'data_apresentacao':materia_legislativa.data_apresentacao, + 'data_apresentacao': materia_legislativa.data_apresentacao, 'autores': materia_legislativa.autores.all(), - 'ementa':ementa, + 'ementa': ementa, 'largura': confg.largura, - 'altura':confg.largura, + 'altura': confg.largura, 'barcode': barcode } - main_template = render_to_string('relatorios/etiqueta_materia_legislativa.html', context) + main_template = render_to_string( + 'relatorios/etiqueta_materia_legislativa.html', context) html = HTML(base_url=base_url, string=main_template) - main_doc = html.render(stylesheets=[CSS(string="@page {{size: {}cm {}cm;}}".format(confg.largura,confg.altura))]) + main_doc = html.render(stylesheets=[CSS( + string="@page {{size: {}cm {}cm;}}".format(confg.largura, confg.altura))]) pdf_file = main_doc.write_pdf() return pdf_file @@ -1582,7 +1624,7 @@ def gera_etiqueta_ml(materia_legislativa, base_url): def etiqueta_materia_legislativa(request, pk): base_url = request.build_absolute_uri() materia_legislativa = MateriaLegislativa.objects.get(pk=pk) - + pdf_file = gera_etiqueta_ml(materia_legislativa, base_url) response = HttpResponse(content_type='application/pdf;') @@ -1590,4 +1632,4 @@ def etiqueta_materia_legislativa(request, pk): response['Content-Transfer-Encoding'] = 'binary' response.write(pdf_file) - return response \ No newline at end of file + return response diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 32c5a0b6c..5284bb591 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -86,7 +86,8 @@ def reordena_materias(request, pk, tipo, ordenacao): "ordemdia": "sapl.sessao:ordemdia_list" } - materias = TIPOS_MATERIAS[tipo].objects.filter(sessao_plenaria_id=pk).order_by(*TIPOS_ORDENACAO[ordenacao]) + materias = TIPOS_MATERIAS[tipo].objects.filter( + sessao_plenaria_id=pk).order_by(*TIPOS_ORDENACAO[ordenacao]) update_list = [] for numero, materia in enumerate(materias, 1): @@ -102,11 +103,12 @@ def verifica_presenca(request, model, spk, is_leitura=False): if not model.objects.filter(sessao_plenaria_id=spk).exists(): username = request.user.username if is_leitura: - text = 'Leitura não pode ser feita sem presenças' + text = 'Leitura não pode ser feita sem presenças' else: text = 'Votação não pode ser aberta sem presenças' - - logger.error("user={}. {} (sessao_plenaria_id={}).".format(username,text, spk)) + + logger.error("user={}. {} (sessao_plenaria_id={}).".format( + username, text, spk)) msg = _(text) messages.add_message(request, messages.ERROR, msg) return False @@ -182,7 +184,7 @@ def abrir_votacao(request, pk, spk): is_leitura = materia_votacao.tipo_votacao == 4 if (verifica_presenca(request, presenca_model, spk, is_leitura) and verifica_votacoes_abertas(request) and - verifica_sessao_iniciada(request, spk, is_leitura)): + verifica_sessao_iniciada(request, spk, is_leitura)): materia_votacao.votacao_aberta = True sessao = SessaoPlenaria.objects.get(id=spk) sessao.painel_aberto = True @@ -204,7 +206,8 @@ 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}) + 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) autor = ', '.join([str(a.autor) for a in autoria]) if autoria else "-" @@ -239,9 +242,12 @@ def customize_link_materia(context, pk, has_permission, is_expediente): # 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): @@ -559,7 +565,7 @@ def filtra_materias_copia_sessao_ajax(request): } for opcao in lista_materias_disponiveis_copia ] - return JsonResponse({ 'materias': lista_materias }) + return JsonResponse({'materias': lista_materias}) class TransferenciaMateriasSessaoAbstract(PermissionRequiredMixin, ListView): @@ -571,7 +577,8 @@ class TransferenciaMateriasSessaoAbstract(PermissionRequiredMixin, ListView): TransferenciaMateriasSessaoAbstract, self ).get_context_data(**kwargs) - sessao_plenaria_atual = SessaoPlenaria.objects.get(pk=self.kwargs['pk']) + sessao_plenaria_atual = SessaoPlenaria.objects.get( + pk=self.kwargs['pk']) context['subnav_template_name'] = 'sessao/subnav.yaml' context['root_pk'] = self.kwargs['pk'] @@ -627,7 +634,7 @@ class TransferenciaMateriasSessaoAbstract(PermissionRequiredMixin, ListView): messages.add_message(request, messages.ERROR, msg) msg_c = _( - 'Se o problema persistir, entre em contato com o suporte do ' \ + 'Se o problema persistir, entre em contato com o suporte do ' 'Interlegis.' ) messages.add_message(request, messages.WARNING, msg_c) @@ -925,7 +932,6 @@ class OradorCrud(MasterDetailCrud): form_class = OradorForm template_name = 'sessao/oradores_create.html' - def get_initial(self): return {'id_sessao': self.kwargs['pk']} @@ -937,7 +943,8 @@ class OradorCrud(MasterDetailCrud): if tipo_sessao.nome == "Solene": context.update( {'subnav_template_name': 'sessao/subnav-solene.yaml'}) - ultimo_orador = Orador.objects.filter(sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first() + ultimo_orador = Orador.objects.filter( + sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first() context["ultima_ordem"] = ultimo_orador.numero_ordem if ultimo_orador else 0 return context @@ -1009,7 +1016,8 @@ class OradorExpedienteCrud(OradorCrud): if tipo_sessao.nome == "Solene": context.update( {'subnav_template_name': 'sessao/subnav-solene.yaml'}) - ultimo_orador = OradorExpediente.objects.filter(sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first() + ultimo_orador = OradorExpediente.objects.filter( + sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first() context["ultima_ordem"] = ultimo_orador.numero_ordem if ultimo_orador else 0 return context @@ -1074,6 +1082,7 @@ class OradorExpedienteCrud(OradorCrud): class OradorOrdemDiaCrud(OradorCrud): model = OradorOrdemDia + class CreateView(MasterDetailCrud.CreateView): form_class = OradorOrdemDiaForm template_name = 'sessao/oradores_create.html' @@ -1087,7 +1096,8 @@ class OradorOrdemDiaCrud(OradorCrud): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - ultimo_orador = OradorOrdemDia.objects.filter(sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first() + ultimo_orador = OradorOrdemDia.objects.filter( + sessao_plenaria=kwargs['root_pk']).order_by("-numero_ordem").first() context["ultima_ordem"] = ultimo_orador.numero_ordem if ultimo_orador else 0 return context @@ -1936,20 +1946,26 @@ def get_materias_expediente(sessao_plenaria): rv = m.registrovotacao_set.filter(materia=m.materia).first() rp = m.retiradapauta_set.filter(materia=m.materia).first() + rl = m.registroleitura_set.filter(materia=m.materia).first() if rv: resultado = rv.tipo_resultado_votacao.nome resultado_observacao = rv.observacao elif rp: resultado = rp.tipo_de_retirada.descricao resultado_observacao = rp.observacao + elif rl: + resultado = _('Matéria lida') + resultado_observacao = rl.observacao else: - resultado = _('Matéria lida') if m.tipo_votacao == 4 else _('Matéria não votada') + resultado = _('Matéria não lida') if m.tipo_votacao == 4 else _( + 'Matéria não votada') resultado_observacao = '' voto_nominal = [] if m.tipo_votacao == 2: for voto in VotoParlamentar.objects.filter(expediente=m.id): - voto_nominal.append((voto.parlamentar.nome_completo, voto.voto)) + voto_nominal.append( + (voto.parlamentar.nome_completo, voto.voto)) voto = RegistroVotacao.objects.filter(expediente=m.id).last() if voto: @@ -1978,7 +1994,7 @@ def get_materias_expediente(sessao_plenaria): 'voto_nao': voto_nao, 'voto_abstencoes': voto_abstencoes, 'voto_nominal': voto_nominal, - 'observacao_materia': m.materia.observacao, + 'observacao_materia': m.materia.observacao, 'observacao': m.observacao }) @@ -2061,20 +2077,26 @@ def get_materias_ordem_do_dia(sessao_plenaria): # Verificar resultado rv = o.registrovotacao_set.filter(materia=o.materia).first() rp = o.retiradapauta_set.filter(materia=o.materia).first() + rl = o.registroleitura_set.filter(materia=o.materia).first() if rv: resultado = rv.tipo_resultado_votacao.nome resultado_observacao = rv.observacao elif rp: resultado = rp.tipo_de_retirada.descricao resultado_observacao = rp.observacao + elif rl: + resultado = _('Matéria lida') + resultado_observacao = rl.observacao else: - resultado = _('Matéria lida') if o.tipo_votacao == 4 else _('Matéria não votada') + resultado = _('Matéria não lida') if o.tipo_votacao == 4 else _( + 'Matéria não votada') resultado_observacao = '' voto_nominal = [] if o.tipo_votacao == 2: for voto in VotoParlamentar.objects.filter(ordem=o.id): - voto_nominal.append((voto.parlamentar.nome_completo, voto.voto)) + voto_nominal.append( + (voto.parlamentar.nome_completo, voto.voto)) voto = RegistroVotacao.objects.filter(ordem=o.id).last() if voto: @@ -2104,7 +2126,7 @@ def get_materias_ordem_do_dia(sessao_plenaria): 'voto_nao': voto_nao, 'voto_abstencoes': voto_abstencoes, 'voto_nominal': voto_nominal, - 'observacao': o.observacao + 'observacao': o.observacao }) return {'materias_ordem': materias_ordem} @@ -3435,7 +3457,8 @@ class VotacaoExpedienteView(SessaoPermissionMixin): self.logger.error("user=" + username + ". " + str(e)) return self.form_invalid(form) else: - expediente = ExpedienteMateria.objects.get(id=expediente_id) + expediente = ExpedienteMateria.objects.get( + id=expediente_id) resultado = TipoResultadoVotacao.objects.get( id=request.POST['resultado_votacao']) expediente.resultado = resultado.nome @@ -3586,7 +3609,8 @@ class PautaSessaoDetailView(DetailView): # ===================================================================== # Identificação Básica abertura = self.object.data_inicio.strftime('%d/%m/%Y') - encerramento = self.object.data_fim.strftime('%d/%m/%Y') if self.object.data_fim else "" + encerramento = self.object.data_fim.strftime( + '%d/%m/%Y') if self.object.data_fim else "" hora_inicio = self.object.hora_inicio hora_fim = self.object.hora_fim @@ -3612,7 +3636,8 @@ class PautaSessaoDetailView(DetailView): resultado = _('Matéria não votada') resultado_observacao = _(' ') - ultima_tramitacao = m.materia.tramitacao_set.order_by('-data_tramitacao', '-id').first() + ultima_tramitacao = m.materia.tramitacao_set.order_by( + '-data_tramitacao', '-id').first() numeracao = m.materia.numeracao_set.first() materias_expediente.append({ @@ -3662,7 +3687,8 @@ class PautaSessaoDetailView(DetailView): resultado = _('Matéria não votada') resultado_observacao = _(' ') - ultima_tramitacao = o.materia.tramitacao_set.order_by('-data_tramitacao', '-id').first() + ultima_tramitacao = o.materia.tramitacao_set.order_by( + '-data_tramitacao', '-id').first() numeracao = o.materia.numeracao_set.first() materias_ordem.append({ @@ -3792,7 +3818,7 @@ def verifica_materia_sessao_plenaria_ajax(request): sessao_plenaria=pk_sessao_plenaria, materia=id_materia_selecionada ).exists() - return JsonResponse({ 'is_materia_presente': is_materia_presente }) + return JsonResponse({'is_materia_presente': is_materia_presente}) class AdicionarVariasMateriasExpediente(PermissionRequiredForAppCrudMixin, @@ -4727,7 +4753,7 @@ class AbstractLeituraView(FormView): page = '' if 'page' in self.request.GET: page = '?page={}'.format(self.request.GET['page']) - + pk = self.kwargs['pk'] if self.expediente: url = reverse('sapl.sessao:expedientemateria_list', @@ -4746,8 +4772,8 @@ class AbstractLeituraView(FormView): 'pk': self.kwargs['pk'], 'iso': 1 if not self.expediente else 0, 'oid': self.kwargs['oid'], - }, - ) + page + }, + ) + page return url