Browse Source

Merge branch '3.1.x' into 3078-corrigir-problemas-listagem-parlamentares

pull/3079/head
Edward 6 years ago
committed by GitHub
parent
commit
ba3ddbffba
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      requirements/requirements.txt
  2. 11
      sapl/materia/forms.py
  3. 16
      sapl/parlamentares/views.py
  4. 50
      sapl/sessao/views.py
  5. 7
      sapl/templates/compilacao/layout/dispositivo_checkbox.html
  6. 9
      sapl/templates/compilacao/layout/dispositivo_radio.html
  7. 16
      sapl/templates/parlamentares/composicaomesa_form.html

2
requirements/requirements.txt

@ -1,4 +1,4 @@
django>=1.11.19,<2.0 django>=1.11.27,<2.0
django-haystack==2.8.1 django-haystack==2.8.1
django-filter==2.0.0 django-filter==2.0.0
djangorestframework==3.9.1 djangorestframework==3.9.1

11
sapl/materia/forms.py

@ -926,17 +926,20 @@ class AnexadaForm(ModelForm):
anexadas_anexada = Anexada.objects.filter( anexadas_anexada = Anexada.objects.filter(
materia_principal=materia_anexada) materia_principal=materia_anexada)
while anexadas_anexada and not ciclico: anexadas_visitadas = [materia_principal]
while anexadas_anexada:
anexadas = [] anexadas = []
for anexa in anexadas_anexada: for anexa in anexadas_anexada:
if materia_principal == anexa.materia_anexada: if anexa.materia_anexada in anexadas_visitadas:
ciclico = True ciclico = True
break
else: else:
anexadas_visitadas.append(anexa.materia_anexada)
for a in Anexada.objects.filter(materia_principal=anexa.materia_anexada): for a in Anexada.objects.filter(materia_principal=anexa.materia_anexada):
anexadas.append(a) anexadas.append(a)
if ciclico:
break
anexadas_anexada = anexadas anexadas_anexada = anexadas
if ciclico: if ciclico:

16
sapl/parlamentares/views.py

@ -615,6 +615,7 @@ class ParlamentarCrud(Crud):
return [_('Parlamentar'), _('Partido'), return [_('Parlamentar'), _('Partido'),
_('Ativo?'), _('Titular?')] _('Ativo?'), _('Titular?')]
class ParlamentarMateriasView(FormView): class ParlamentarMateriasView(FormView):
template_name = "parlamentares/materias.html" template_name = "parlamentares/materias.html"
success_url = reverse_lazy('sapl.parlamentares:parlamentar_materia') success_url = reverse_lazy('sapl.parlamentares:parlamentar_materia')
@ -807,14 +808,13 @@ def altera_field_mesa(request):
# atual deve ser a primeira daquela legislatura # atual deve ser a primeira daquela legislatura
else: else:
year = timezone.now().year year = timezone.now().year
try: logger.debug(
logger.debug( "user={}. Tentando obter id de sessoes com data_inicio.ano={}.".format(username, year))
"user=" + username + ". Tentando obter id de sessoes com data_inicio.ano={}.".format(year)) sessao_selecionada = sessoes.filter(data_inicio__year=year).first()
sessao_selecionada = sessoes.get(data_inicio__year=year).id if not sessao_selecionada:
except ObjectDoesNotExist:
logger.error("user=" + username + ". Id de sessoes com data_inicio.ano={} não encontrado. " logger.error("user=" + username + ". Id de sessoes com data_inicio.ano={} não encontrado. "
"Selecionado o ID da primeira sessão.".format(year)) "Selecionado o ID da primeira sessão.".format(year))
sessao_selecionada = sessoes.first().id sessao_selecionada = sessoes.first()
# Atualiza os componentes da view após a mudança # Atualiza os componentes da view após a mudança
composicao_mesa = ComposicaoMesa.objects.filter( composicao_mesa = ComposicaoMesa.objects.filter(
@ -845,7 +845,7 @@ def altera_field_mesa(request):
'lista_composicao': lista_composicao, 'lista_composicao': lista_composicao,
'lista_parlamentares': lista_parlamentares, 'lista_parlamentares': lista_parlamentares,
'lista_cargos': lista_cargos, 'lista_cargos': lista_cargos,
'sessao_selecionada': sessao_selecionada, 'sessao_selecionada': sessao_selecionada.id,
'msg': ('', 1)}) 'msg': ('', 1)})

50
sapl/sessao/views.py

@ -60,6 +60,12 @@ TipoResultadoVotacaoCrud = CrudAux.build(
TipoResultadoVotacao, 'tipo_resultado_votacao') TipoResultadoVotacao, 'tipo_resultado_votacao')
TipoRetiradaPautaCrud = CrudAux.build(TipoRetiradaPauta, 'tipo_retirada_pauta') TipoRetiradaPautaCrud = CrudAux.build(TipoRetiradaPauta, 'tipo_retirada_pauta')
# constantes
SIMBOLICA = 1
NOMINAL = 2
SECRETA = 3
LEITURA = 4
def reordernar_materias_expediente(request, pk): def reordernar_materias_expediente(request, pk):
expedientes = ExpedienteMateria.objects.filter( expedientes = ExpedienteMateria.objects.filter(
@ -263,25 +269,25 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
if obj.votacao_aberta: if obj.votacao_aberta:
url = '' url = ''
if is_expediente: if is_expediente:
if obj.tipo_votacao == 1: if obj.tipo_votacao == SIMBOLICA:
url = reverse('sapl.sessao:votacaosimbolicaexp', url = reverse('sapl.sessao:votacaosimbolicaexp',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
'oid': obj.pk, 'oid': obj.pk,
'mid': obj.materia_id}) 'mid': obj.materia_id})
elif obj.tipo_votacao == 2: elif obj.tipo_votacao == NOMINAL:
url = reverse('sapl.sessao:votacaonominalexp', url = reverse('sapl.sessao:votacaonominalexp',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
'oid': obj.pk, 'oid': obj.pk,
'mid': obj.materia_id}) 'mid': obj.materia_id})
elif obj.tipo_votacao == 3: elif obj.tipo_votacao == SECRETA:
url = reverse('sapl.sessao:votacaosecretaexp', url = reverse('sapl.sessao:votacaosecretaexp',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
'oid': obj.pk, 'oid': obj.pk,
'mid': obj.materia_id}) 'mid': obj.materia_id})
elif obj.tipo_votacao == 4: elif obj.tipo_votacao == LEITURA:
url = reverse('sapl.sessao:leituraexp', url = reverse('sapl.sessao:leituraexp',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
@ -289,25 +295,25 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
'mid': obj.materia_id}) 'mid': obj.materia_id})
else: else:
if obj.tipo_votacao == 1: if obj.tipo_votacao == SIMBOLICA:
url = reverse('sapl.sessao:votacaosimbolica', url = reverse('sapl.sessao:votacaosimbolica',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
'oid': obj.pk, 'oid': obj.pk,
'mid': obj.materia_id}) 'mid': obj.materia_id})
elif obj.tipo_votacao == 2: elif obj.tipo_votacao == NOMINAL:
url = reverse('sapl.sessao:votacaonominal', url = reverse('sapl.sessao:votacaonominal',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
'oid': obj.pk, 'oid': obj.pk,
'mid': obj.materia_id}) 'mid': obj.materia_id})
elif obj.tipo_votacao == 3: elif obj.tipo_votacao == SECRETA:
url = reverse('sapl.sessao:votacaosecreta', url = reverse('sapl.sessao:votacaosecreta',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
'oid': obj.pk, 'oid': obj.pk,
'mid': obj.materia_id}) 'mid': obj.materia_id})
elif obj.tipo_votacao == 4: elif obj.tipo_votacao == LEITURA:
url = reverse('sapl.sessao:leituraod', url = reverse('sapl.sessao:leituraod',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
@ -315,7 +321,7 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
'mid': obj.materia_id}) 'mid': obj.materia_id})
if has_permission: if has_permission:
if obj.tipo_votacao != 4: if obj.tipo_votacao != LEITURA:
btn_registrar = ''' btn_registrar = '''
<form action="%s"> <form action="%s">
<input type="submit" class="btn btn-primary" <input type="submit" class="btn btn-primary"
@ -346,7 +352,7 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
}) + '?tipo_materia=ordem' }) + '?tipo_materia=ordem'
if has_permission: if has_permission:
if not obj.tipo_votacao == 4: if not obj.tipo_votacao == LEITURA:
btn_abrir = ''' btn_abrir = '''
Matéria não votada<br /> Matéria não votada<br />
<a href="%s" <a href="%s"
@ -376,7 +382,7 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
retirada_observacao)) retirada_observacao))
else: else:
if obj.tipo_votacao == 4: if obj.tipo_votacao == LEITURA:
resultado = obj.registroleitura_set.filter( resultado = obj.registroleitura_set.filter(
materia_id=obj.materia_id).last() materia_id=obj.materia_id).last()
resultado_descricao = "Matéria lida" resultado_descricao = "Matéria lida"
@ -384,57 +390,57 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
else: else:
resultado = obj.registrovotacao_set.filter( resultado = obj.registrovotacao_set.filter(
materia_id=obj.materia_id).last() materia_id=obj.materia_id).last()
resultado_descricao = obj.resultado resultado_descricao = resultado.tipo_resultado_votacao.nome
resultado_observacao = resultado.observacao resultado_observacao = resultado.observacao
if has_permission: if has_permission:
url = '' url = ''
if is_expediente: if is_expediente:
if obj.tipo_votacao == 1: if obj.tipo_votacao == SIMBOLICA:
url = reverse( url = reverse(
'sapl.sessao:votacaosimbolicaexpedit', 'sapl.sessao:votacaosimbolicaexpedit',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
'oid': obj.pk, 'oid': obj.pk,
'mid': obj.materia_id}) 'mid': obj.materia_id})
elif obj.tipo_votacao == 2: elif obj.tipo_votacao == NOMINAL:
url = reverse('sapl.sessao:votacaonominalexpedit', url = reverse('sapl.sessao:votacaonominalexpedit',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
'oid': obj.pk, 'oid': obj.pk,
'mid': obj.materia_id}) 'mid': obj.materia_id})
elif obj.tipo_votacao == 3: elif obj.tipo_votacao == SECRETA:
url = reverse('sapl.sessao:votacaosecretaexpedit', url = reverse('sapl.sessao:votacaosecretaexpedit',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
'oid': obj.pk, 'oid': obj.pk,
'mid': obj.materia_id}) 'mid': obj.materia_id})
elif obj.tipo_votacao == 4: elif obj.tipo_votacao == LEITURA:
url = reverse('sapl.sessao:leituraexp', url = reverse('sapl.sessao:leituraexp',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
'oid': obj.pk, 'oid': obj.pk,
'mid': obj.materia_id}) 'mid': obj.materia_id})
else: else:
if obj.tipo_votacao == 1: if obj.tipo_votacao == SIMBOLICA:
url = reverse('sapl.sessao:votacaosimbolicaedit', url = reverse('sapl.sessao:votacaosimbolicaedit',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
'oid': obj.pk, 'oid': obj.pk,
'mid': obj.materia_id}) 'mid': obj.materia_id})
elif obj.tipo_votacao == 2: elif obj.tipo_votacao == NOMINAL:
url = reverse('sapl.sessao:votacaonominaledit', url = reverse('sapl.sessao:votacaonominaledit',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
'oid': obj.pk, 'oid': obj.pk,
'mid': obj.materia_id}) 'mid': obj.materia_id})
elif obj.tipo_votacao == 3: elif obj.tipo_votacao == SECRETA:
url = reverse('sapl.sessao:votacaosecretaedit', url = reverse('sapl.sessao:votacaosecretaedit',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
'oid': obj.pk, 'oid': obj.pk,
'mid': obj.materia_id}) 'mid': obj.materia_id})
elif obj.tipo_votacao == 4: elif obj.tipo_votacao == LEITURA:
url = reverse('sapl.sessao:leituraod', url = reverse('sapl.sessao:leituraod',
kwargs={ kwargs={
'pk': obj.sessao_plenaria_id, 'pk': obj.sessao_plenaria_id,
@ -447,7 +453,7 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
resultado_observacao)) resultado_observacao))
else: else:
if obj.tipo_votacao == 2: if obj.tipo_votacao == NOMINAL:
if is_expediente: if is_expediente:
url = reverse( url = reverse(
'sapl.sessao:votacao_nominal_transparencia', 'sapl.sessao:votacao_nominal_transparencia',
@ -470,7 +476,7 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
resultado_descricao, resultado_descricao,
resultado_observacao)) resultado_observacao))
elif obj.tipo_votacao == 1: elif obj.tipo_votacao == SIMBOLICA:
if is_expediente: if is_expediente:
url = reverse( url = reverse(
'sapl.sessao:votacao_simbolica_transparencia', 'sapl.sessao:votacao_simbolica_transparencia',

7
sapl/templates/compilacao/layout/dispositivo_checkbox.html

@ -25,7 +25,12 @@
</div> </div>
<div class="itemlabel dpt"> <div class="itemlabel dpt">
{% if choice.1.ta_publicado_id %} {% if choice.1.ta_publicado_id %}
<a target="_blank" href="{% url 'sapl.compilacao:ta_text' choice.1.ta.pk%}#{{choice.1.pk}}" class="nomenclatura_heranca">{% trans "Herança:" %} {% nomenclatura_heranca choice.1 1 1 %}</a> <a target="_blank"
href="{% url 'sapl.compilacao:ta_text' choice.1.ta.pk%}#{{choice.1.pk}}"
class="nomenclatura_heranca">
{% trans "Herança:" %}
{% nomenclatura_heranca choice.1 1 1 %}
</a>
{% endif %} {% endif %}
<div class="{{ choice.1.tipo_dispositivo.class_css }}"> <div class="{{ choice.1.tipo_dispositivo.class_css }}">
<div class="dptt {% dispositivo_desativado choice.1 None None %}" id="dptt{{choice.1.pk}}" > <div class="dptt {% dispositivo_desativado choice.1 None None %}" id="dptt{{choice.1.pk}}" >

9
sapl/templates/compilacao/layout/dispositivo_radio.html

@ -18,7 +18,14 @@
</div> </div>
<div class="itemlabel dpt"> <div class="itemlabel dpt">
{% if dpt.nivel > 1 %} {% if dpt.nivel > 1 %}
<a class="clearfix" target="_blank" href="{% url 'sapl.compilacao:ta_text' dpt.ta.pk%}#{{dpt.pk}}" class="nomenclatura_heranca">{% trans "Herança:" %} {% heranca request dpt 0 0 %}</a> <a class="clearfix"
target="_blank"
href="{% url 'sapl.compilacao:ta_text' dpt.ta.pk%}#{{dpt.pk}}"
class="nomenclatura_heranca">
{% for p in dpt.get_parents_asc %}
{{ p.rotulo }}
{% endfor %}
{% endif %} {% endif %}
<div class="{{ dpt.tipo_dispositivo.class_css }}"> <div class="{{ dpt.tipo_dispositivo.class_css }}">
<div class="dptt {% dispositivo_desativado dpt None None %}" id="dptt{{dpt.pk}}" > <div class="dptt {% dispositivo_desativado dpt None None %}" id="dptt{{dpt.pk}}" >

16
sapl/templates/parlamentares/composicaomesa_form.html

@ -183,17 +183,21 @@
lista_cargos = data['lista_cargos']; lista_cargos = data['lista_cargos'];
// Atualiza a listagem dos campos // Atualiza a listagem dos campos
for (i = 0; i < lista_sessoes.length; i++) { if (lista_sessoes != undefined) {
$('#id_sessao_legislativa').append('<option value="' + lista_sessoes[i][0] + '">' + lista_sessoes[i][1] + '</option>'); for (i = 0; i < lista_sessoes.length; i++) {
$('#id_sessao_legislativa').append('<option value="' + lista_sessoes[i][0] + '">' + lista_sessoes[i][1] + '</option>');
}
} }
for (i = 0; i < lista_composicao.length; i++) { if (lista_composicao != null) {
$('#id_composicao_mesa').append('<option value="' + lista_composicao[i][0] + '">' + lista_composicao[i][1] + ' || ' + lista_composicao[i][2] + '</option>'); for (i = 0; i < lista_composicao.length; i++) {
$('#id_composicao_mesa').append('<option value="' + lista_composicao[i][0] + '">' + lista_composicao[i][1] + ' || ' + lista_composicao[i][2] + '</option>');
}
} }
// Caso ainda tenha parlamentares/cargos a serem inseridos, preenche a listagem com // Caso ainda tenha parlamentares/cargos a serem inseridos, preenche a listagem com
// os disponíveis e garante que as ferramentas de inserção estejam disponíveis // os disponíveis e garante que as ferramentas de inserção estejam disponíveis
if (lista_parlamentares.length != 0 && lista_cargos.length != 0){ if (lista_parlamentares != null && lista_parlamentares.length != 0 && lista_cargos.length != 0){
$('#id_incluir').show() $('#id_incluir').show()
$('#id_cargo').show(); $('#id_cargo').show();
$('#id_parlamentar').show(); $('#id_parlamentar').show();
@ -218,7 +222,7 @@
// Garante que o botão de remoção aparecerá, caso tenha // Garante que o botão de remoção aparecerá, caso tenha
// algum parlamentar na composição // algum parlamentar na composição
if (lista_composicao.length != 0){ if (lista_composicao != null && lista_composicao.length != 0){
$("#id_excluir").show() $("#id_excluir").show()
} }
else{ else{

Loading…
Cancel
Save