Browse Source

Add Page Mesa

pull/7/head
Eduardo Edson Batista Cordeiro Alves 10 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 django.conf.urls import include, url
from sessao.views import (ExpedienteView, OradorExpedienteDelete, from sessao.views import (ExpedienteView, MesaView, OradorExpedienteDelete,
OradorExpedienteEdit, OradorExpedienteView, OradorExpedienteEdit, OradorExpedienteView,
PainelView, PresencaOrdemDiaView, PresencaView, PainelView, PresencaOrdemDiaView, PresencaView,
sessao_crud, tipo_expediente_crud, sessao_crud, tipo_expediente_crud,
@ -22,6 +22,7 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [
OradorExpedienteDelete.as_view(), name='oradorexcluir'), OradorExpedienteDelete.as_view(), name='oradorexcluir'),
url(r'^(?P<pk>\d+)/oradorexpediente/editar/(?P<oid>\d+)$', url(r'^(?P<pk>\d+)/oradorexpediente/editar/(?P<oid>\d+)$',
OradorExpedienteEdit.as_view(), name='oradoreditar'), 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 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 parlamentares.models import Parlamentar
from sapl.crud import build_crud from sapl.crud import build_crud
from .models import (ExpedienteMateria, ExpedienteSessao, OradorExpediente, from .models import (CargoMesa, ExpedienteMateria, ExpedienteSessao,
OrdemDia, PresencaOrdemDia, RegistroVotacao, IntegranteMesa, OradorExpediente, OrdemDia,
SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente, PresencaOrdemDia, RegistroVotacao, SessaoPlenaria,
SessaoPlenariaPresenca, TipoExpediente,
TipoResultadoVotacao, TipoSessaoPlenaria) TipoResultadoVotacao, TipoSessaoPlenaria)
tipo_sessao_crud = build_crud( tipo_sessao_crud = build_crud(
@ -356,3 +357,97 @@ class OradorExpedienteView(FormMixin, sessao_crud.CrudDetailView):
def get_success_url(self): def get_success_url(self):
return self.detail_url 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: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: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: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> <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