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( tabela.append(
('anexadas_ciclicas', ('anexadas_ciclicas',
'Matérias Anexadas cíclicas', 'Matérias Anexadas cíclicas',
len(anexados_ciclicos(True)) len(materias_anexadas_ciclicas())
) )
) )
tabela.append( tabela.append(
@ -1209,10 +1209,43 @@ class ListarInconsistenciasView(PermissionRequiredMixin, ListView):
) )
return tabela 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): def anexados_ciclicos(ofMateriaLegislativa):
ciclicos = [] ciclicos = []
if ofMateriaLegislativa: if ofMateriaLegislativa:
principais = Anexada.objects.values( principais = Anexada.objects.values(
'materia_principal' 'materia_principal'
@ -1299,7 +1332,7 @@ class ListarAnexadasCiclicasView(PermissionRequiredMixin, ListView):
paginate_by = 10 paginate_by = 10
def get_queryset(self): def get_queryset(self):
return anexados_ciclicos(True) return materias_anexadas_ciclicas()
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super( context = super(

17
sapl/templates/base/anexadas_ciclicas.html

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

Loading…
Cancel
Save