Browse Source

Add Presenca View

pull/6/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
a1738c73ac
  1. 1
      sessao/models.py
  2. 65
      sessao/views.py
  3. 8
      templates/sessao/presenca.html

1
sessao/models.py

@ -263,6 +263,7 @@ class VotoParlamentar(models.Model): # RegistroVotacaoParlamentar
return _('Votação: %(votacao)s - Parlamentar: %(parlamentar)s') % { return _('Votação: %(votacao)s - Parlamentar: %(parlamentar)s') % {
'votacao': self.votacao, 'parlamentar': self.parlamentar} 'votacao': self.votacao, 'parlamentar': self.parlamentar}
class SessaoPlenariaPresenca(models.Model): class SessaoPlenariaPresenca(models.Model):
sessao_plen = models.ForeignKey(SessaoPlenaria) sessao_plen = models.ForeignKey(SessaoPlenaria)
parlamentar = models.ForeignKey(Parlamentar) parlamentar = models.ForeignKey(Parlamentar)

65
sessao/views.py

@ -1,7 +1,9 @@
from django import forms
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import FormMixin
from extra_views import InlineFormSetView from extra_views import InlineFormSetView
from parlamentares.models import Parlamentar
from sapl.crud import build_crud from sapl.crud import build_crud
from .models import (ExpedienteMateria, ExpedienteSessao, OrdemDia, from .models import (ExpedienteMateria, ExpedienteSessao, OrdemDia,
RegistroVotacao, SessaoPlenaria, SessaoPlenariaPresenca, RegistroVotacao, SessaoPlenaria, SessaoPlenariaPresenca,
TipoExpediente, TipoResultadoVotacao, TipoSessaoPlenaria) TipoExpediente, TipoResultadoVotacao, TipoSessaoPlenaria)
@ -89,7 +91,62 @@ class ExpedienteView(InlineFormSetView):
extra = 1 extra = 1
class PresencaView(InlineFormSetView): class PresencaForm(forms.Form):
model = SessaoPlenaria presenca = forms.CharField(required=False, initial=False)
inline_model = SessaoPlenariaPresenca parlamentar = forms.CharField(required=False, max_length=20)
class PresencaView(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/presenca.html' 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)

8
templates/sessao/presenca.html

@ -13,11 +13,11 @@
<ul class="small-block-grid-1 medium-block-grid-1 large-block-grid-1"> <ul class="small-block-grid-1 medium-block-grid-1 large-block-grid-1">
<li><input type="checkbox" onClick="checkAll(this)" /> Marcar/Desmarcar Todos</li> <li><input type="checkbox" onClick="checkAll(this)" /> Marcar/Desmarcar Todos</li>
</ul> </ul>
{{formset}}
{% for fieldname in view.get_parlamentares %} {% for parlamentar, check in view.get_parlamentares %}
<ul class="small-block-grid-2 medium-block-grid-2 large-block-grid-2"> <ul class="small-block-grid-2 medium-block-grid-2 large-block-grid-2">
<li><input type="checkbox" name="presenca"/></li> <li><input type="checkbox" name="presenca" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/></li>
<li><label for="parlamentar">{{ fieldname }}</label></li> <li><label for="parlamentar">{{ parlamentar }}</label></li>
</ul> </ul>
{% endfor %} {% endfor %}

Loading…
Cancel
Save