|
|
@ -1,7 +1,9 @@ |
|
|
|
from django import forms |
|
|
|
from django.utils.translation import ugettext_lazy as _ |
|
|
|
from django.views.generic.edit import FormMixin |
|
|
|
from extra_views import InlineFormSetView |
|
|
|
from parlamentares.models import Parlamentar |
|
|
|
from sapl.crud import build_crud |
|
|
|
|
|
|
|
from .models import (ExpedienteMateria, ExpedienteSessao, OrdemDia, |
|
|
|
RegistroVotacao, SessaoPlenaria, SessaoPlenariaPresenca, |
|
|
|
TipoExpediente, TipoResultadoVotacao, TipoSessaoPlenaria) |
|
|
@ -89,7 +91,62 @@ class ExpedienteView(InlineFormSetView): |
|
|
|
extra = 1 |
|
|
|
|
|
|
|
|
|
|
|
class PresencaView(InlineFormSetView): |
|
|
|
model = SessaoPlenaria |
|
|
|
inline_model = SessaoPlenariaPresenca |
|
|
|
class PresencaForm(forms.Form): |
|
|
|
presenca = forms.CharField(required=False, initial=False) |
|
|
|
parlamentar = forms.CharField(required=False, max_length=20) |
|
|
|
|
|
|
|
|
|
|
|
class PresencaView(FormMixin, sessao_crud.CrudDetailView): |
|
|
|
template_name = 'sessao/presenca.html' |
|
|
|
form_class = PresencaForm |
|
|
|
|
|
|
|
def post(self, request, *args, **kwargs): |
|
|
|
self.object = self.get_object() |
|
|
|
form = self.get_form() |
|
|
|
|
|
|
|
if form.is_valid(): |
|
|
|
# Pegar os presentes salvos no banco |
|
|
|
presentes_banco = SessaoPlenariaPresenca.objects.filter( |
|
|
|
sessao_plen_id=self.object.id) |
|
|
|
|
|
|
|
# Id dos parlamentares presentes |
|
|
|
marcados = request.POST.getlist('presenca') |
|
|
|
|
|
|
|
# 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() |
|
|
|
|
|
|
|
for p in marcados: |
|
|
|
sessao = SessaoPlenariaPresenca() |
|
|
|
sessao.sessao_plen = self.object |
|
|
|
sessao.parlamentar = Parlamentar.objects.get(id=p) |
|
|
|
sessao.save() |
|
|
|
|
|
|
|
return self.form_valid(form) |
|
|
|
else: |
|
|
|
return self.form_invalid(form) |
|
|
|
|
|
|
|
def get_success_url(self): |
|
|
|
return self.detail_url |
|
|
|
|
|
|
|
def get_parlamentares(self): |
|
|
|
self.object = self.get_object() |
|
|
|
|
|
|
|
presencas = SessaoPlenariaPresenca.objects.filter( |
|
|
|
sessao_plen_id=self.object.id |
|
|
|
) |
|
|
|
|
|
|
|
presentes = [] |
|
|
|
for p in presencas: |
|
|
|
presentes.append(p.parlamentar.id) |
|
|
|
|
|
|
|
for parlamentar in Parlamentar.objects.all(): |
|
|
|
if parlamentar.ativo: |
|
|
|
try: |
|
|
|
presentes.index(parlamentar.id) |
|
|
|
except ValueError: |
|
|
|
yield (parlamentar, False) |
|
|
|
else: |
|
|
|
yield (parlamentar, True) |
|
|
|