Browse Source

Add Page Mesa

pull/7/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
d69ec04a3f
  1. 3
      sessao/urls.py
  2. 101
      sessao/views.py
  3. 44
      templates/sessao/mesa.html
  4. 1
      templates/sessao/sessaoplenaria_detail.html

3
sessao/urls.py

@ -1,6 +1,6 @@
from django.conf.urls import include, url
from sessao.views import (ExpedienteView, OradorExpedienteDelete,
from sessao.views import (ExpedienteView, MesaView, OradorExpedienteDelete,
OradorExpedienteEdit, OradorExpedienteView,
PainelView, PresencaOrdemDiaView, PresencaView,
sessao_crud, tipo_expediente_crud,
@ -22,6 +22,7 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [
OradorExpedienteDelete.as_view(), name='oradorexcluir'),
url(r'^(?P<pk>\d+)/oradorexpediente/editar/(?P<oid>\d+)$',
OradorExpedienteEdit.as_view(), name='oradoreditar'),
url(r'^(?P<pk>\d+)/mesa$', MesaView.as_view(), name='mesa'),
]
sessao_urls = urlpatterns_sessao, sessao_crud.namespace, sessao_crud.namespace

101
sessao/views.py

@ -6,9 +6,10 @@ from extra_views import InlineFormSetView
from parlamentares.models import Parlamentar
from sapl.crud import build_crud
from .models import (ExpedienteMateria, ExpedienteSessao, OradorExpediente,
OrdemDia, PresencaOrdemDia, RegistroVotacao,
SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente,
from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao,
IntegranteMesa, OradorExpediente, OrdemDia,
PresencaOrdemDia, RegistroVotacao, SessaoPlenaria,
SessaoPlenariaPresenca, TipoExpediente,
TipoResultadoVotacao, TipoSessaoPlenaria)
tipo_sessao_crud = build_crud(
@ -356,3 +357,97 @@ class OradorExpedienteView(FormMixin, sessao_crud.CrudDetailView):
def get_success_url(self):
return self.detail_url
class MesaForm(forms.Form):
parlamentar = forms.IntegerField(required=True)
cargo = forms.IntegerField(required=True)
class MesaView(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/mesa.html'
form_class = MesaForm
def get_success_url(self):
return self.detail_url
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = MesaForm(request.POST)
if 'Incluir' in request.POST:
if form.is_valid():
integrante = IntegranteMesa()
integrante.sessao_plenaria_id = self.object.id
integrante.parlamentar_id = request.POST['parlamentar']
integrante.cargo_id = request.POST['cargo']
integrante.save()
return self.form_valid(form)
else:
form.clean()
return self.form_valid(form)
elif 'Excluir' in request.POST:
ids = request.POST['composicao_mesa'].split(':')
IntegranteMesa.objects.get(
sessao_plenaria_id=self.object.id,
parlamentar_id=ids[0],
cargo_id=ids[1]
).delete()
return self.form_valid(form)
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
mesa = IntegranteMesa.objects.filter(
sessao_plenaria=self.object)
integrantes = []
for m in mesa:
parlamentar = Parlamentar.objects.get(
id=m.parlamentar_id)
cargo = CargoMesa.objects.get(
id=m.cargo_id)
integrante = {'parlamentar': parlamentar, 'cargo': cargo}
integrantes.append(integrante)
context.update({'integrantes': integrantes})
return self.render_to_response(context)
def get_candidatos_mesa(self):
self.object = self.get_object()
lista_parlamentares = []
lista_integrantes = []
for parlamentar in Parlamentar.objects.all():
if parlamentar.ativo:
lista_parlamentares.append(parlamentar)
for integrante in IntegranteMesa.objects.filter(
sessao_plenaria=self.object):
parlamentar = Parlamentar.objects.get(
id=integrante.parlamentar_id)
lista_integrantes.append(parlamentar)
lista = list(set(lista_parlamentares) - set(lista_integrantes))
lista.sort(key=lambda x: x.nome_parlamentar)
return lista
def get_cargos_mesa(self):
self.object = self.get_object()
lista_cargos = CargoMesa.objects.all()
lista_cargos_ocupados = []
for integrante in IntegranteMesa.objects.filter(
sessao_plenaria=self.object):
cargo = CargoMesa.objects.get(
id=integrante.cargo_id)
lista_cargos_ocupados.append(cargo)
lista = list(set(lista_cargos) - set(lista_cargos_ocupados))
lista.sort(key=lambda x: x.descricao)
return lista

44
templates/sessao/mesa.html

@ -0,0 +1,44 @@
{% extends "sessao/sessaoplenaria_detail.html" %}
{% load i18n %}
{% block detail_content %}
<fieldset>
<legend>Mesa Diretora da Sessão</legend>
<form method="POST">
{% csrf_token %}
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
<li>
<select multiple size="5" name="composicao_mesa">
{% for i in integrantes %}
<option value="{{i.parlamentar.id}}:{{i.cargo.id}}">
{{i.parlamentar.nome_parlamentar}} || {{i.cargo.descricao}}
</option>
{% endfor %}
</select>
</li>
<li>
{% if view.get_cargos_mesa %}<input type="submit" name="Incluir" Value="Incluir" />{% endif %}
<br />
<br />
<input type="submit" name="Excluir" Value="Excluir" />
</li>
{% if view.get_cargos_mesa %}
<li>
<select name="parlamentar" id="parlamentar">
{% for parlamentar in view.get_candidatos_mesa %}
<option value="{{parlamentar.id}}" name="parlamentar" id="parlamentar">{{parlamentar.nome_parlamentar}}</option>
{% endfor %}
</select>
<select name="cargo" id="cargo">
{% for cargo in view.get_cargos_mesa %}
<option value="{{cargo.id}}" name="cargo" id="cargo">{{cargo.descricao}}</option>
{% endfor %}
</select>
</li>
{% endif %}
</ul>
</form>
</fieldset>
{% endblock detail_content %}

1
templates/sessao/sessaoplenaria_detail.html

@ -8,6 +8,7 @@
<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: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:painel' object.pk %}" class="button secondary">{% trans 'Painel Eletrônico' %}</a></dd>
</dl>
{% endblock sections_nav %}

Loading…
Cancel
Save