Repository: interlegis/sapl

Issue:
Mesa da Sessão Plenária: membros em ordem alfabética
Apresentar em ordem alfabética a lista de parlamentares para composição da Mesa da Sessão Plenária.
![captura de tela de 2018-04-16 08-12-27](https://user-images.githubusercontent.com/19169882/38806055-769e8b0e-414e-11e8-9369-ec7ffed8e8ce.png)



Discussion:
O ideal é que a lista para escolha dos membros da mesa esteja em ordem de nome parlamentar, pois é o mais usado. Estranho é que, depois de inserido o primeiro membro, a lista passa a apresentar os nomes parlamentares para inserção do demais membros, embora fora da ordem alfabética e contendo parlamentares inativos.
@edwardoliveira 
Eu fiz uns testes locais e está acontecendo o seguinte:
Na primeira vez que o sistema carrega a página está mostrando o nome completo do parlamentar, após fazer uma inserção ou deleção mostra o nome do parlamentar (acredito que o nome que ele é conhecido), se você recarregar a página ele volta a mostrar por nome completo, temos que investigar.
Agora dos parlamentares inativos eu não consegui replicar @andreagudo @edwardoliveira.
Os inativos aparecem antes de recarregar a página, no caso, Márcio e João. Depois de recarregar, aparece os ativos em ordem de nome civil.
![captura de tela de 2018-04-20 16-01-35](https://user-images.githubusercontent.com/19169882/39068874-3e9c0ca4-44b4-11e8-9879-e95dc2da2f13.png)


Resolving patch:
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -4,7 +4,7 @@
 from django.contrib import messages
 from django.contrib.auth.decorators import permission_required
 from django.contrib.auth.mixins import PermissionRequiredMixin
-from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
+from django.core.exceptions import ObjectDoesNotExist
 from django.core.urlresolvers import reverse
 from django.db.models import Max, Q
 from django.forms.utils import ErrorList
@@ -990,8 +990,8 @@ def get(self, request, *args, **kwargs):
             set(
                 [p.parlamentar for p in parlamentares]) - set(
                 parlamentares_ocupados))
-
-        org_parlamentares_vagos = sorted(parlamentares_vagos, key=lambda x: x.nome_parlamentar)
+        org_parlamentares_vagos = parlamentares_vagos
+        org_parlamentares_vagos.sort(key=lambda x: remover_acentos(x.nome_parlamentar))
         org_parlamentares_vagos = [p for p in org_parlamentares_vagos if p.ativo]
         # Se todos os cargos estiverem ocupados, a listagem de parlamentares
         # deve ser renderizada vazia
@@ -1046,8 +1046,10 @@ def atualizar_mesa(request):
     lista_composicao = [(c.id, c.parlamentar.__str__(),
                          c.cargo.__str__()) for c in composicao_mesa]
     lista_parlamentares = [(
-        p.id, p.__str__()) for p in parlamentares_vagos]
+        p.id, p.nome_parlamentar)
+        for p in parlamentares_vagos if p.ativo]
     lista_cargos = [(c.id, c.__str__()) for c in cargos_vagos]
+    lista_parlamentares.sort(key=lambda x: remover_acentos(x[1]))
 
     return JsonResponse(
         {'lista_composicao': lista_composicao,
diff --git a/sapl/utils.py b/sapl/utils.py
--- a/sapl/utils.py
+++ b/sapl/utils.py
@@ -735,5 +735,4 @@ def RemoveTag(texto):
     return textoSaida
 
 def remover_acentos(string):
-     return ''.join([c for c in unicodedata.normalize('NFD', string)
-                         if unicodedata.category(c) != 'Mn'])
\ No newline at end of file
+     return unicodedata.normalize('NFKD', string).encode('ASCII', 'ignore').decode()
\ No newline at end of file


Test patch: