Browse Source

Add Page Explicações Pessoais

pull/7/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
f727f4a915
  1. 11
      sessao/urls.py
  2. 138
      sessao/views.py
  3. 21
      templates/sessao/delete_explicacao.html
  4. 26
      templates/sessao/edit_explicacao.html
  5. 52
      templates/sessao/explicacao.html
  6. 1
      templates/sessao/sessaoplenaria_detail.html

11
sessao/urls.py

@ -1,6 +1,7 @@
from django.conf.urls import include, url
from sessao.views import (ExpedienteView, MateriaOrdemDiaView, MesaView,
from sessao.views import (ExpedienteView, ExplicacaoDelete, ExplicacaoEdit,
ExplicacaoView, MateriaOrdemDiaView, MesaView,
OradorExpedienteDelete, OradorExpedienteEdit,
OradorExpedienteView, PainelView,
PresencaOrdemDiaView, PresencaView, ResumoView,
@ -27,7 +28,13 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [
url(r'^(?P<pk>\d+)/materiaordemdia$',
MateriaOrdemDiaView.as_view(), name='materiaordemdia'),
url(r'^(?P<pk>\d+)/resumo$',
ResumoView.as_view(), name='resumo')
ResumoView.as_view(), name='resumo'),
url(r'^(?P<pk>\d+)/explicacao$',
ExplicacaoView.as_view(), name='explicacao'),
url(r'^(?P<pk>\d+)/explicacao/excluir/(?P<oid>\d+)$',
ExplicacaoDelete.as_view(), name='explicacaoexcluir'),
url(r'^(?P<pk>\d+)/explicacao/editar/(?P<oid>\d+)$',
ExplicacaoEdit.as_view(), name='explicacaoeditar'),
]
sessao_urls = urlpatterns_sessao, sessao_crud.namespace, sessao_crud.namespace

138
sessao/views.py

@ -13,7 +13,7 @@ from parlamentares.models import Parlamentar
from sapl.crud import build_crud
from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao,
IntegranteMesa, OradorExpediente, OrdemDia,
IntegranteMesa, Orador, OradorExpediente, OrdemDia,
PresencaOrdemDia, RegistroVotacao, SessaoPlenaria,
SessaoPlenariaPresenca, TipoExpediente,
TipoResultadoVotacao, TipoSessaoPlenaria)
@ -777,3 +777,139 @@ class ExpedienteView(FormMixin, sessao_crud.CrudDetailView):
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sessaoplenaria:expediente', kwargs={'pk': pk})
class ExplicacaoView(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/explicacao.html'
form_class = OradorForm
def get(self, request, *args, **kwargs):
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 Orador.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 Orador.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)
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = OradorForm(request.POST)
if form.is_valid():
orador = Orador()
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):
pk = self.kwargs['pk']
return reverse('sessaoplenaria:explicacao', kwargs={'pk': pk})
class ExplicacaoDelete(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/delete_explicacao.html'
form_class = OradorDeleteForm
def post(self, request, *args, **kwargs):
self.object = self.get_object()
current_url = request.get_full_path()
words = current_url.split('/')
form = OradorDeleteForm(request.POST)
if form.is_valid():
orador = Orador.objects.get(
sessao_plenaria_id=self.object.id,
parlamentar_id=words[-1])
orador.delete()
return self.form_valid(form)
else:
return self.form_invalid(form)
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sessaoplenaria:explicacao', kwargs={'pk': pk})
class ExplicacaoEdit(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/edit_explicacao.html'
form_class = OradorForm
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sessaoplenaria:explicacao', kwargs={'pk': pk})
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = OradorForm(request.POST)
if form.is_valid():
current_url = request.get_full_path()
words = current_url.split('/')
orador = Orador.objects.get(
sessao_plenaria_id=self.object.id,
parlamentar_id=words[-1])
orador.delete()
orador = Orador()
orador.sessao_plenaria_id = self.object.id
orador.numero_ordem = request.POST['numero_ordem']
orador.parlamentar = Parlamentar.objects.get(
id=words[-1])
orador.url_discurso = request.POST['url_discurso']
orador.save()
return self.form_valid(form)
else:
return self.form_invalid(form)
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
current_url = self.request.get_full_path()
words = current_url.split('/')
parlamentar = Parlamentar.objects.get(id=words[-1])
orador = Orador.objects.get(
sessao_plenaria=self.object, parlamentar=parlamentar)
explicacao = {'parlamentar': parlamentar, 'numero_ordem':
orador.numero_ordem, 'url_discurso': orador.url_discurso}
context.update({'explicacao': explicacao})
return self.render_to_response(context)

21
templates/sessao/delete_explicacao.html

@ -0,0 +1,21 @@
{% extends "base.html" %}
{% load i18n %}
{% block base_content %}
<form action="" method="post">{% csrf_token %}
<div class="callout panel text-center radius clearfix">
<p>
{% blocktrans %}
Tem certeza que deseja apagar o orador?
{% endblocktrans %}
</p>
<div class="button-group">
<a href="{{ view.detail_url }}" class="button button radius alert">{% trans 'Cancelar' %}</a>
<input name="submit" value="{% trans 'Confirmar' %}" class="submit button button radius success" type="submit"></li>
</div>
</div>
</form>
{% endblock %}

26
templates/sessao/edit_explicacao.html

@ -0,0 +1,26 @@
{% extends "sessao/sessaoplenaria_detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<fieldset>
<legend>Editar Orador</legend>
<form method="POST" action="">
{% csrf_token %}
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
<li>Ordem de pronunciamento</li>
<li>Parlamentar</li>
<li>URL Discurso</li>
</ul>
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
<li><input type="text" id="numero_ordem" name="numero_ordem" value="{{explicacao.numero_ordem}}" /></li>
<li><input type="text" id="parlamentar" name="parlamentar" value="{{explicacao.parlamentar.nome_parlamentar}}" disabled /></li>
<li><input type="text" id="url_discurso" name="url_discurso" value="{{explicacao.url_discurso}}"/></li>
</ul>
<input type="submit" value="Salvar Orador" />
</form>
</fieldset>
{% endblock detail_content %}

52
templates/sessao/explicacao.html

@ -0,0 +1,52 @@
{% extends "sessao/sessaoplenaria_detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block detail_content %}
<fieldset>
<legend>Oradores do Expediente</legend>
<ul class="small-block-grid-4 medium-block-grid-4 large-block-grid-4">
<li>Ordem de pronunciamento</li>
<li>Parlamentar</li>
<li>URL Discurso</li>
<li>Editar/Excluir</li>
</ul>
{% for numero_ordem, url_discurso, parlamentar in view.get_oradores %}
<ul class="small-block-grid-4 medium-block-grid-4 large-block-grid-4">
<li>{{numero_ordem}}</li>
<li>{{parlamentar.nome_parlamentar }}</li>
<li>{% if not url_discurso %}Orador sem discurso cadastrado{% else %}{{url_discurso}}{% endif %}</li>
<li>
<a id="editar-orador" href="{% url 'sessaoplenaria:explicacaoeditar' object.pk parlamentar.id %}">Editar</a>
/ <a id="excluir-orador" href="{% url 'sessaoplenaria:explicacaoexcluir' object.pk parlamentar.id %}">Excluir</a>
</li>
</ul>
{% endfor %}
</fieldset>
<fieldset>
<legend>Adicionar Orador</legend>
<form method="POST" action="">
{% csrf_token %}
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
<li>Ordem de pronunciamento</li>
<li>Parlamentar</li>
<li>URL Discurso</li>
</ul>
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
<li><input type="text" id="numero_ordem" name="numero_ordem"/></li>
<li><select name="parlamentar" id="parlamentar">
{% for parlamentar in view.get_candidatos_orador %}
<option value="{{parlamentar.id}}">{{parlamentar.nome_parlamentar}}</option>
{% endfor %}
</select></li>
<li><input type="text" id="url_discurso" name="url_discurso" /></li>
</ul>
<input type="submit" value="Adicionar Orador" />
</form>
</fieldset>
{% endblock detail_content %}

1
templates/sessao/sessaoplenaria_detail.html

@ -9,6 +9,7 @@
<dd><a href="{% url 'sessaoplenaria:presencaordemdia' object.pk %}" class="button secondary">{% trans 'Presença Ordem do Dia' %}</a></dd>
<dd><a href="{% url 'sessaoplenaria:oradorexpediente' object.pk %}" class="button secondary">{% trans 'Oradores do Expediente' %}</a></dd>
<dd><a href="{% url 'sessaoplenaria:mesa' object.pk %}" class="button secondary">{% trans 'Mesa' %}</a></dd>
<dd><a href="{% url 'sessaoplenaria:explicacao' object.pk %}" class="button secondary">{% trans 'Explicações Pessoais' %}</a></dd>
<dd><a href="{% url 'sessaoplenaria:materiaordemdia' object.pk %}" class="button secondary">{% trans 'Matérias' %}</a></dd>
<dd><a href="{% url 'sessaoplenaria:painel' object.pk %}" class="button secondary">{% trans 'Painel Eletrônico' %}</a></dd>
<dd><a href="{% url 'sessaoplenaria:resumo' object.pk %}" class="button secondary">{% trans 'Resumo' %}</a></dd>

Loading…
Cancel
Save