diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
index a761dfbf6..9beb28ee2 100644
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -30,7 +30,7 @@ from sapl.materia.models import (Autoria, DocumentoAcessorio,
from sapl.materia.views import MateriaLegislativaPesquisaView
from sapl.norma.models import NormaJuridica
from sapl.parlamentares.models import (Filiacao, Legislatura, Parlamentar,
- SessaoLegislativa)
+ SessaoLegislativa, Mandato)
from sapl.sessao.apps import AppConfig
from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm
@@ -123,6 +123,7 @@ def abrir_votacao_ordem_view(request, pk, spk):
reverse('sapl.sessao:ordemdia_list', kwargs={'pk': spk}))
+
def put_link_materia(context):
for i, row in enumerate(context['rows']):
materia = context['object_list'][i].materia
@@ -132,6 +133,21 @@ def put_link_materia(context):
context['rows'][i][1] = (row[1][0], url_materia)
return context
+def get_presencas_generic(model, sessao, legislatura):
+ presencas = model.objects.filter(
+ sessao_plenaria=sessao)
+
+ presentes = [p.parlamentar for p in presencas]
+
+ mandato = Mandato.objects.filter(
+ legislatura=legislatura)
+
+ for m in mandato:
+ if m.parlamentar in presentes:
+ yield (m.parlamentar, True)
+ else:
+ yield (m.parlamentar, False)
+
class MateriaOrdemDiaCrud(MasterDetailCrud):
model = OrdemDia
@@ -554,32 +570,16 @@ class SessaoPermissionMixin(PermissionRequiredForAppCrudMixin,
class PresencaMixin:
def get_presencas(self):
- self.object = self.get_object()
-
- presencas = SessaoPlenariaPresenca.objects.filter(
- sessao_plenaria_id=self.object.id
- )
- presentes = [p.parlamentar for p in presencas]
-
- for parlamentar in Parlamentar.objects.filter(ativo=True):
- if parlamentar in presentes:
- yield (parlamentar, True)
- else:
- yield (parlamentar, False)
+ return get_presencas_generic(
+ SessaoPlenariaPresenca,
+ self.object,
+ self.object.legislatura)
def get_presencas_ordem(self):
- self.object = self.get_object()
-
- presencas = PresencaOrdemDia.objects.filter(
- sessao_plenaria_id=self.object.id
- )
- presentes = [p.parlamentar for p in presencas]
-
- for parlamentar in Parlamentar.objects.filter(ativo=True):
- if parlamentar in presentes:
- yield (parlamentar, True)
- else:
- yield (parlamentar, False)
+ return get_presencas_generic(
+ PresencaOrdemDia,
+ self.object,
+ self.object.legislatura)
class PresencaView(FormMixin, PresencaMixin, DetailView):
@@ -605,13 +605,13 @@ class PresencaView(FormMixin, PresencaMixin, DetailView):
sessao_plenaria_id=self.object.id)
# Id dos parlamentares presentes
- marcados = request.POST.getlist('presenca')
+ marcados = request.POST.getlist('presenca_ativos') + request.POST.getlist('presenca_inativos')
# Deletar os que foram desmarcadors
deletar = set(set(presentes_banco) - set(marcados))
for d in deletar:
SessaoPlenariaPresenca.objects.filter(
- parlamentar_id=d.parlamentar_id).delete()
+ parlamentar_id=d.parlamentar_id, sessao_plenaria_id=self.object.id).delete()
for p in marcados:
sessao = SessaoPlenariaPresenca()
@@ -713,13 +713,13 @@ class PresencaOrdemDiaView(FormMixin, PresencaMixin, DetailView):
sessao_plenaria_id=pk)
# Id dos parlamentares presentes
- marcados = request.POST.getlist('presenca')
+ marcados = request.POST.getlist('presenca_ativos') + request.POST.getlist('presenca_inativos')
# Deletar os que foram desmarcadors
deletar = set(set(presentes_banco) - set(marcados))
for d in deletar:
PresencaOrdemDia.objects.filter(
- parlamentar_id=d.parlamentar_id).delete()
+ parlamentar_id=d.parlamentar_id, sessao_plenaria_id=self.object.id).delete()
for p in marcados:
ordem = PresencaOrdemDia()
diff --git a/sapl/templates/sessao/presenca.html b/sapl/templates/sessao/presenca.html
index 372bc8c88..af0221cf0 100644
--- a/sapl/templates/sessao/presenca.html
+++ b/sapl/templates/sessao/presenca.html
@@ -17,17 +17,37 @@
-
-