diff --git a/sessao/urls.py b/sessao/urls.py index c1ee9f83c..e0a30c41d 100644 --- a/sessao/urls.py +++ b/sessao/urls.py @@ -1,7 +1,7 @@ from django.conf.urls import include, url -from sessao.views import (ExpedienteView, PainelView, PresencaView, - sessao_crud, tipo_expediente_crud, +from sessao.views import (ExpedienteView, PainelView, PresencaOrdemDiaView, + PresencaView, sessao_crud, tipo_expediente_crud, tipo_resultado_votacao_crud, tipo_sessao_crud) urlpatterns_sessao = sessao_crud.urlpatterns + [ @@ -11,6 +11,9 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [ PresencaView.as_view(), name='presenca'), url(r'^(?P\d+)/painel$', PainelView.as_view(), name='painel'), + url(r'^(?P\d+)/presencaordemdia$', + PresencaOrdemDiaView.as_view(), + name='presencaordemdia'), ] sessao_urls = urlpatterns_sessao, sessao_crud.namespace, sessao_crud.namespace diff --git a/sessao/views.py b/sessao/views.py index 530eae93c..b71c423b8 100644 --- a/sessao/views.py +++ b/sessao/views.py @@ -1,3 +1,4 @@ +import datetime from django import forms from django.utils.translation import ugettext_lazy as _ from django.views.generic.edit import FormMixin @@ -5,8 +6,9 @@ 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) + PresencaOrdemDia, RegistroVotacao, SessaoPlenaria, + SessaoPlenariaPresenca, TipoExpediente, + TipoResultadoVotacao, TipoSessaoPlenaria) tipo_sessao_crud = build_crud( TipoSessaoPlenaria, 'tipo_sessao_plenaria', [ @@ -154,3 +156,61 @@ class PresencaView(FormMixin, sessao_crud.CrudDetailView): class PainelView(sessao_crud.CrudDetailView): 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) diff --git a/templates/sessao/presencaOrdemDia.html b/templates/sessao/presencaOrdemDia.html new file mode 100644 index 000000000..a975c1dcc --- /dev/null +++ b/templates/sessao/presencaOrdemDia.html @@ -0,0 +1,38 @@ +{% extends "sessao/sessaoplenaria_detail.html" %} +{% load i18n %} + +{% block detail_content %} +
+ {% csrf_token %} + +
    +
  • Presença
  • +
  • Parlamentar
  • +
+ +
    +
  • Marcar/Desmarcar Todos
  • +
+ + {% for parlamentar, check in view.get_parlamentares %} +
    +
  • +
  • +
+ {% endfor %} + +
+ +
+{% endblock detail_content %} + +{% block foot_js %} + +{% endblock %} diff --git a/templates/sessao/sessaoplenaria_detail.html b/templates/sessao/sessaoplenaria_detail.html index d52109ff5..74d0f6bb1 100644 --- a/templates/sessao/sessaoplenaria_detail.html +++ b/templates/sessao/sessaoplenaria_detail.html @@ -6,6 +6,7 @@
{% trans 'Início' %}
{% trans 'Expediente' %}
{% trans 'Presença' %}
+
{% trans 'Presença Ordem do Dia' %}
{% trans 'Painel Eletrônico' %}
{% endblock sections_nav %}