Repository: interlegis/sapl

Issue:
Lista de presença ordem do dia no Resumo/Extrato
<!--- Forneça um resumo geral da _issue_ no título acima -->

## Comportamento Esperado

Deveria constar todos os presentes na ordem do dia no resumo e no extrato.

## Comportamento Atual
Não está aparecendo todos os presentes na ordem do dia.

## Imagens do Ocorrido
<!--- Representação visual em vídeo ou imagem do ocorrido -->
<!--- Se está descrevendo um bug poste imagens ou vídeos na repordução do bug citado, caso se aplique -->

Presença na ordem do dia:
![image](https://user-images.githubusercontent.com/1524415/55021961-6951a780-4fd8-11e9-9dc7-d23d2bcfdc30.png)

Resumo só contendo 5 parlamentares
![image](https://user-images.githubusercontent.com/1524415/55021996-766e9680-4fd8-11e9-89d2-6d7da2cf9aa7.png)

Extrato só contendo 5 parlamentares
![image](https://user-images.githubusercontent.com/1524415/55022041-85eddf80-4fd8-11e9-9d6d-e832a553d0d4.png)


## Seu Ambiente
<!--- Inclua detalhes relevantes sobre o ambiente em que você presenciou/experienciou o bug. -->
* Versão usada (_Release_): 3.1.149
* Nome e versão do navegador: Chrome 10
* Nome e versão do Sistema Operacional (desktop ou mobile): Windows 10




Discussion:
Identifiquei onde se encontra o erro, mas tenho que ver com a pessoa que programou essa parte o que ela queria com essa lógica. Amanhã vejo isso com ele.

Resolving patch:
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -1033,9 +1033,6 @@ def post(self, request, *args, **kwargs):
         return self.get(self, request, args, kwargs)
 
 
-def ordenar_integrantes_por_cargo(integrantes):
-    return sorted(integrantes, key=lambda k: k['cargo'].id)
-
 
 class MesaView(FormMixin, DetailView):
     template_name = 'sessao/mesa.html'
@@ -1338,24 +1335,17 @@ def get_conteudo_multimidia(sessao_plenaria):
 
 
 def get_mesa_diretora(sessao_plenaria):
-    mesa = IntegranteMesa.objects.filter(sessao_plenaria=sessao_plenaria)
-    integrantes = []
-    for m in mesa:
-        parlamentar = Parlamentar.objects.get(
-            id=m.parlamentar_id)
-        cargo = CargoMesa.objects.get(
-            id=m.cargo_id)
-        integrante = {'parlamentar': parlamentar, 'cargo': cargo}
-        integrantes.append(integrante)
-    return ({'mesa': ordenar_integrantes_por_cargo(integrantes)})
+    mesa = IntegranteMesa.objects.filter(sessao_plenaria=sessao_plenaria).order_by('cargo_id')
+    integrantes = [{'parlamentar': m.parlamentar,
+                    'cargo': m.cargo} for m in mesa]
+    return {'mesa': integrantes}
 
 
 def get_presenca_sessao(sessao_plenaria):
-    presencas = SessaoPlenariaPresenca.objects.filter(
-        sessao_plenaria_id=sessao_plenaria.id
-    ).order_by('parlamentar__nome_parlamentar')
 
-    parlamentares_sessao = [p.parlamentar for p in presencas]
+    parlamentares_sessao = [p.parlamentar for p in SessaoPlenariaPresenca.objects.filter(
+                                sessao_plenaria_id=sessao_plenaria.id
+                            ).order_by('parlamentar__nome_parlamentar')]
 
     ausentes_sessao = JustificativaAusencia.objects.filter(
         sessao_plenaria_id=sessao_plenaria.id
@@ -1440,48 +1430,45 @@ def get_oradores_expediente(sessao_plenaria):
                'observacao': observacao
                }
         oradores.append(ora)
-    context = {'oradores': oradores}
-    return context
+    return {'oradores': oradores}
 
 
 def get_presenca_ordem_do_dia(sessao_plenaria):
-    mesa_aux = get_mesa_diretora(sessao_plenaria)
-    presencas = PresencaOrdemDia.objects.filter(
-        sessao_plenaria_id=sessao_plenaria.id
-    ).order_by('parlamentar__nome_parlamentar')
+    parlamentares_ordem = [p.parlamentar for p in PresencaOrdemDia.objects.filter(
+                                            sessao_plenaria_id=sessao_plenaria.id
+                                        ).order_by('parlamentar__nome_parlamentar')]
 
-    parlamentares_mesa_dia = [m for m in mesa_aux['mesa']]
+    return {'presenca_ordem': parlamentares_ordem}
 
-    presidente_dia = ''
-    for m in mesa_aux['mesa']:
-        if m['cargo'].descricao == 'Presidente':
-            presidente_dia = [m['parlamentar']]
-            break
 
-    parlamentares_ordem = [p.parlamentar for p in presencas]
+def get_assinaturas(sessao_plenaria):
+    mesa_dia = get_mesa_diretora(sessao_plenaria)['mesa']
 
-    cont = 0
-    for index, parlamentar in enumerate(parlamentares_ordem):
-        try:
-            if parlamentar == parlamentares_mesa_dia[cont]["parlamentar"]:
-                del(parlamentares_ordem[index])
-                cont += 1
-        except IndexError:
-            pass
+    presidente_dia = next(iter(
+        [m['parlamentar'] for m in mesa_dia if m['cargo'].descricao == 'Presidente']),
+        '')
+
+    parlamentares_ordem = [p.parlamentar for p in PresencaOrdemDia.objects.filter(
+                                    sessao_plenaria_id=sessao_plenaria.id
+                                    ).order_by('parlamentar__nome_parlamentar')]
+
+    parlamentares_mesa = [m['parlamentar'] for m in mesa_dia]
+
+    # filtra parlamentares retirando os que sao da mesa
+    parlamentares_ordem = [p for p in parlamentares_ordem if p not in parlamentares_mesa]
 
     context = {}
-    context.update({'presenca_ordem': parlamentares_ordem})
 
     config_assinatura_ata = AppsAppConfig.objects.first().assinatura_ata
     if config_assinatura_ata == 'T' and parlamentares_ordem:
         context.update(
             {'texto_assinatura': 'Assinatura de Todos os Parlamentares Presentes na Sessão'})
-        context.update({'assinatura_mesa': parlamentares_mesa_dia,
+        context.update({'assinatura_mesa': mesa_dia,
                         'assinatura_presentes': parlamentares_ordem})
-    elif config_assinatura_ata == 'M' and parlamentares_mesa_dia:
+    elif config_assinatura_ata == 'M' and mesa_dia:
         context.update(
             {'texto_assinatura': 'Assinatura da Mesa Diretora da Sessão'})
-        context.update({'assinatura_presentes': parlamentares_mesa_dia})
+        context.update({'assinatura_presentes': mesa_dia})
     elif config_assinatura_ata == 'P' and presidente_dia:
         context.update(
             {'texto_assinatura': 'Assinatura do Presidente da Sessão'})
@@ -1649,6 +1636,9 @@ def get_context(self, *args, **kwargs):
         # Presença Ordem do Dia
         context.update(get_presenca_ordem_do_dia(self.object))
         # =====================================================================
+        # Assinaturas
+        context.update(get_assinaturas(self.object))
+        # =====================================================================
         # Matérias Ordem do Dia
         # Votos de Votação Nominal de Matérias Ordem do Dia
         materias_ordem_dia_votacao_nominal = OrdemDia.objects.filter(


Test patch: