Browse Source

Alterando consulta e apresentação de Anexadas ciclicas (#3080)

* Alterando consulta e apresentação de Anexadas

* refatorando nome de variaveis em materias_anexadas_ciclicas

* refatorando funcao is_ciclo_unique
pull/3090/head
Ricardo Lima Canela 5 years ago
committed by GitHub
parent
commit
8d476e7cc1
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 39
      sapl/base/views.py
  2. 17
      sapl/templates/base/anexadas_ciclicas.html

39
sapl/base/views.py

@ -1198,7 +1198,7 @@ class ListarInconsistenciasView(PermissionRequiredMixin, ListView):
tabela.append(
('anexadas_ciclicas',
'Matérias Anexadas cíclicas',
len(anexados_ciclicos(True))
len(materias_anexadas_ciclicas())
)
)
tabela.append(
@ -1209,10 +1209,43 @@ class ListarInconsistenciasView(PermissionRequiredMixin, ListView):
)
return tabela
def materias_anexadas_ciclicas():
ciclos = []
for a in Anexada.objects.select_related('materia_principal',
'materia_anexada',
'materia_principal__tipo',
'materia_anexada__tipo'):
visitados = [a.materia_principal]
anexadas = [a.materia_anexada]
while len(anexadas) > 0:
ma = anexadas.pop()
if ma not in visitados:
visitados.append(ma)
anexadas.extend([a.materia_anexada for a in Anexada.objects.filter(materia_principal=ma)])
else:
ciclo_list = visitados + [ma]
ciclos.append(ciclo_list)
"""
Remove ciclos repetidos (ou semanticamente equivalentes).
Exemplo: A -> B -> A e B -> A -> B
"""
ciclos_set = []
ciclos_unique = [e for e in ciclos if is_ciclo_unique(e, ciclos_set)]
return ciclos_unique
def is_ciclo_unique(ciclo, ciclos_set):
if set(ciclo) not in ciclos_set:
ciclos_set.append(set(ciclo))
return True
else:
return False
def anexados_ciclicos(ofMateriaLegislativa):
ciclicos = []
if ofMateriaLegislativa:
principais = Anexada.objects.values(
'materia_principal'
@ -1299,7 +1332,7 @@ class ListarAnexadasCiclicasView(PermissionRequiredMixin, ListView):
paginate_by = 10
def get_queryset(self):
return anexados_ciclicos(True)
return materias_anexadas_ciclicas()
def get_context_data(self, **kwargs):
context = super(

17
sapl/templates/base/anexadas_ciclicas.html

@ -10,19 +10,20 @@
<table class="table table-striped table-hover">
<thead>
<tr>
<th>Matéria Fim do Ciclo</th>
<th>Matéria Início do Ciclo</th>
<th>Ciclo</th>
</tr>
</thead>
<tbody>
{% for data, fim, inicio in anexadas_ciclicas %}
{% for ciclos in anexadas_ciclicas %}
<tr>
<td>{{ data }}</td>
<td>
<a href="{% url 'sapl.materia:materialegislativa_detail' fim.pk %}">{{ fim }}</a>
</td>
<td>
<a href="{% url 'sapl.materia:materialegislativa_detail' inicio.pk %}">{{ inicio }}</a>
{{ page_obj.start_index|add:forloop.counter0 }} )
{% for ciclo in ciclos %}
<a href="{% url 'sapl.materia:materialegislativa_detail' ciclo.pk %}">{{ ciclo }}</a>
{% if not forloop.last %}
->
{% endif %}
{% endfor %}
</td>
</tr>
{% endfor %}

Loading…
Cancel
Save