Browse Source

Add Presença Ordem Dia

pull/6/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
ca43f93ccd
  1. 7
      sessao/urls.py
  2. 64
      sessao/views.py
  3. 38
      templates/sessao/presencaOrdemDia.html
  4. 1
      templates/sessao/sessaoplenaria_detail.html

7
sessao/urls.py

@ -1,7 +1,7 @@
from django.conf.urls import include, url from django.conf.urls import include, url
from sessao.views import (ExpedienteView, PainelView, PresencaView, from sessao.views import (ExpedienteView, PainelView, PresencaOrdemDiaView,
sessao_crud, tipo_expediente_crud, PresencaView, sessao_crud, tipo_expediente_crud,
tipo_resultado_votacao_crud, tipo_sessao_crud) tipo_resultado_votacao_crud, tipo_sessao_crud)
urlpatterns_sessao = sessao_crud.urlpatterns + [ urlpatterns_sessao = sessao_crud.urlpatterns + [
@ -11,6 +11,9 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [
PresencaView.as_view(), name='presenca'), PresencaView.as_view(), name='presenca'),
url(r'^(?P<pk>\d+)/painel$', url(r'^(?P<pk>\d+)/painel$',
PainelView.as_view(), name='painel'), PainelView.as_view(), name='painel'),
url(r'^(?P<pk>\d+)/presencaordemdia$',
PresencaOrdemDiaView.as_view(),
name='presencaordemdia'),
] ]
sessao_urls = urlpatterns_sessao, sessao_crud.namespace, sessao_crud.namespace sessao_urls = urlpatterns_sessao, sessao_crud.namespace, sessao_crud.namespace

64
sessao/views.py

@ -1,3 +1,4 @@
import datetime
from django import forms 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 django.views.generic.edit import FormMixin
@ -5,8 +6,9 @@ from extra_views import InlineFormSetView
from parlamentares.models import Parlamentar 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, PresencaOrdemDia, RegistroVotacao, SessaoPlenaria,
TipoExpediente, TipoResultadoVotacao, TipoSessaoPlenaria) SessaoPlenariaPresenca, TipoExpediente,
TipoResultadoVotacao, TipoSessaoPlenaria)
tipo_sessao_crud = build_crud( tipo_sessao_crud = build_crud(
TipoSessaoPlenaria, 'tipo_sessao_plenaria', [ TipoSessaoPlenaria, 'tipo_sessao_plenaria', [
@ -154,3 +156,61 @@ class PresencaView(FormMixin, sessao_crud.CrudDetailView):
class PainelView(sessao_crud.CrudDetailView): class PainelView(sessao_crud.CrudDetailView):
template_name = 'sessao/painel.html' template_name = 'sessao/painel.html'
class PresencaOrdemDiaView(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/presencaOrdemDia.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 = PresencaOrdemDia.objects.filter(
sessao_plenaria_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:
PresencaOrdemDia.objects.filter(
parlamentar_id=d.parlamentar_id).delete()
for p in marcados:
ordem = PresencaOrdemDia()
ordem.sessao_plenaria = self.object
ordem.parlamentar = Parlamentar.objects.get(id=p)
ordem.data_ordem = datetime.datetime.now().strftime(
'%Y-%m-%d')
ordem.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 = PresencaOrdemDia.objects.filter(
sessao_plenaria_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)

38
templates/sessao/presencaOrdemDia.html

@ -0,0 +1,38 @@
{% extends "sessao/sessaoplenaria_detail.html" %}
{% load i18n %}
{% block detail_content %}
<form method="POST">
{% csrf_token %}
<ul class="small-block-grid-2 medium-block-grid-2 large-block-grid-2">
<li>Presença</li>
<li>Parlamentar</li>
</ul>
<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>
</ul>
{% for parlamentar, check in view.get_parlamentares %}
<ul class="small-block-grid-2 medium-block-grid-2 large-block-grid-2">
<li><input type="checkbox" name="presenca" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/></li>
<li><label for="parlamentar">{{ parlamentar }}</label></li>
</ul>
{% endfor %}
<br />
<input type="submit" value="Salvar" />
</form>
{% endblock detail_content %}
{% block foot_js %}
<script language="JavaScript">
function checkAll(source) {
checkboxes = document.getElementsByName('presenca');
for(var i=0, n=checkboxes.length;i<n;i++) {
checkboxes[i].checked = source.checked;
}
}
</script>
{% endblock %}

1
templates/sessao/sessaoplenaria_detail.html

@ -6,6 +6,7 @@
<dd><a href="{% url 'sessaoplenaria:detail' object.pk %}" class="button secondary">{% trans 'Início' %}</a></dd> <dd><a href="{% url 'sessaoplenaria:detail' object.pk %}" class="button secondary">{% trans 'Início' %}</a></dd>
<dd><a href="{% url 'sessaoplenaria:expediente' object.pk %}" class="button secondary">{% trans 'Expediente' %}</a></dd> <dd><a href="{% url 'sessaoplenaria:expediente' object.pk %}" class="button secondary">{% trans 'Expediente' %}</a></dd>
<dd><a href="{% url 'sessaoplenaria:presenca' object.pk %}" class="button secondary">{% trans 'Presença' %}</a></dd> <dd><a href="{% url 'sessaoplenaria:presenca' object.pk %}" class="button secondary">{% trans 'Presença' %}</a></dd>
<dd><a href="{% url 'sessaoplenaria:presencaordemdia' object.pk %}" class="button secondary">{% trans 'Presença Ordem do Dia' %}</a></dd>
<dd><a href="{% url 'sessaoplenaria:painel' object.pk %}" class="button secondary">{% trans 'Painel Eletrônico' %}</a></dd> <dd><a href="{% url 'sessaoplenaria:painel' object.pk %}" class="button secondary">{% trans 'Painel Eletrônico' %}</a></dd>
</dl> </dl>
{% endblock sections_nav %} {% endblock sections_nav %}

Loading…
Cancel
Save