From da528924125138d96289b5daa5e77eae69b11d41 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Thu, 10 Sep 2015 18:07:29 -0300 Subject: [PATCH] Add OradorExpedienteView and Template --- sessao/urls.py | 10 +-- sessao/views.py | 76 +++++++++++++++++++-- templates/sessao/oradorExpediente.html | 55 +++++++++++++++ templates/sessao/sessaoplenaria_detail.html | 1 + 4 files changed, 133 insertions(+), 9 deletions(-) create mode 100644 templates/sessao/oradorExpediente.html diff --git a/sessao/urls.py b/sessao/urls.py index e0a30c41d..f9369dbb8 100644 --- a/sessao/urls.py +++ b/sessao/urls.py @@ -1,8 +1,8 @@ from django.conf.urls import include, url - -from sessao.views import (ExpedienteView, PainelView, PresencaOrdemDiaView, - PresencaView, sessao_crud, tipo_expediente_crud, - tipo_resultado_votacao_crud, tipo_sessao_crud) +from sessao.views import (ExpedienteView, OradorExpedienteView, PainelView, + PresencaOrdemDiaView, PresencaView, sessao_crud, + tipo_expediente_crud, tipo_resultado_votacao_crud, + tipo_sessao_crud) urlpatterns_sessao = sessao_crud.urlpatterns + [ url(r'^(?P\d+)/expediente$', @@ -14,6 +14,8 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [ url(r'^(?P\d+)/presencaordemdia$', PresencaOrdemDiaView.as_view(), name='presencaordemdia'), + url(r'^(?P\d+)/oradorexpediente$', + OradorExpedienteView.as_view(), name='oradorexpediente'), ] sessao_urls = urlpatterns_sessao, sessao_crud.namespace, sessao_crud.namespace diff --git a/sessao/views.py b/sessao/views.py index 5bd73dec6..81ed36aaf 100644 --- a/sessao/views.py +++ b/sessao/views.py @@ -2,13 +2,11 @@ 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, - PresencaOrdemDia, RegistroVotacao, SessaoPlenaria, - SessaoPlenariaPresenca, TipoExpediente, +from .models import (ExpedienteMateria, ExpedienteSessao, OradorExpediente, + OrdemDia, PresencaOrdemDia, RegistroVotacao, + SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente, TipoResultadoVotacao, TipoSessaoPlenaria) tipo_sessao_crud = build_crud( @@ -213,3 +211,71 @@ class PresencaOrdemDiaView(FormMixin, sessao_crud.CrudDetailView): yield (parlamentar, False) else: yield (parlamentar, True) + + +class OradorForm(forms.Form): + numero_ordem = forms.IntegerField(required=True) + parlamentar = forms.CharField(required=True, max_length=20) + url_discurso = forms.CharField(required=False, max_length=100) + + +class OradorExpedienteView(FormMixin, sessao_crud.CrudDetailView): + template_name = 'sessao/oradorExpediente.html' + form_class = OradorForm + + def get(self, request, *args, **kwargs): + print(request.GET) + self.object = self.get_object() + context = self.get_context_data(object=self.object) + return self.render_to_response(context) + + def get_candidatos_orador(self): + self.object = self.get_object() + lista_parlamentares = [] + lista_oradores = [] + + for parlamentar in Parlamentar.objects.all(): + if parlamentar.ativo: + lista_parlamentares.append(parlamentar) + + for orador in OradorExpediente.objects.filter( + sessao_plenaria_id=self.object.id): + parlamentar = Parlamentar.objects.get( + id=orador.parlamentar_id) + lista_oradores.append(parlamentar) + + lista = list(set(lista_parlamentares) - set(lista_oradores)) + lista.sort(key=lambda x: x.nome_parlamentar) + return lista + + def get_oradores(self): + self.object = self.get_object() + + for orador in OradorExpediente.objects.filter( + sessao_plenaria_id=self.object.id): + numero_ordem = orador.numero_ordem + url_discurso = orador.url_discurso + parlamentar = Parlamentar.objects.get( + id=orador.parlamentar_id) + yield(numero_ordem, url_discurso, parlamentar.nome_parlamentar) + + def post(self, request, *args, **kwargs): + self.object = self.get_object() + print(request.POST['numero_ordem'], request.POST['parlamentar']) + form = OradorForm(request.POST) + + if form.is_valid(): + orador = OradorExpediente() + orador.sessao_plenaria_id = self.object.id + orador.numero_ordem = request.POST['numero_ordem'] + orador.parlamentar = Parlamentar.objects.get( + id=request.POST['parlamentar']) + orador.url_discurso = request.POST['url_discurso'] + orador.save() + + return self.form_valid(form) + else: + return self.form_invalid(form) + + def get_success_url(self): + return self.detail_url diff --git a/templates/sessao/oradorExpediente.html b/templates/sessao/oradorExpediente.html new file mode 100644 index 000000000..b14b59a72 --- /dev/null +++ b/templates/sessao/oradorExpediente.html @@ -0,0 +1,55 @@ +{% extends "sessao/sessaoplenaria_detail.html" %} +{% load i18n %} +{% load crispy_forms_tags %} + +{% block detail_content %} + +

Oradores do Expediente

+

+ +
    +
  • Ordem de pronunciamento
  • +
  • Parlamentar
  • +
  • URL Discurso
  • +
  • Excluir
  • +
+ +
+ {% csrf_token %} + {% for numero_ordem, url_discuro, parlamentar in view.get_oradores %} +
    +
  • {{numero_ordem}}
  • +
  • {{parlamentar}}
  • +
  • {% if url_discurso == null %}Orador sem discurso cadastrado{% else %}{{url_discurso}}{% endif %}
  • +
  • Excluir
  • +
+ {% endfor %} + +
+ + +
+ +
+ {% csrf_token %} + +
    +
  • Ordem de pronunciamento
  • +
  • Parlamentar
  • +
  • URL Discurso
  • +
+ +
    +
  • + + +
  • +
+ +
+ +{% endblock detail_content %} \ No newline at end of file diff --git a/templates/sessao/sessaoplenaria_detail.html b/templates/sessao/sessaoplenaria_detail.html index 74d0f6bb1..70b8f5bb5 100644 --- a/templates/sessao/sessaoplenaria_detail.html +++ b/templates/sessao/sessaoplenaria_detail.html @@ -7,6 +7,7 @@
{% trans 'Expediente' %}
{% trans 'Presença' %}
{% trans 'Presença Ordem do Dia' %}
+
{% trans 'Oradores do Expediente' %}
{% trans 'Painel Eletrônico' %}
{% endblock sections_nav %}