Browse Source

Implement MesaDiretora

pull/11/merge
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
ec2e341175
  1. 6
      parlamentares/urls.py
  2. 112
      parlamentares/views.py
  3. 2
      templates/base.html
  4. 76
      templates/mesa_diretora/mesa_diretora.html

6
parlamentares/urls.py

@ -1,6 +1,5 @@
from django.conf.urls import include, url
from parlamentares.views import (ParlamentaresCadastroView,
from parlamentares.views import (MesaDiretoraView, ParlamentaresCadastroView,
ParlamentaresEditarView, ParlamentaresView,
cargo_mesa_crud, coligacao_crud,
legislatura_crud, nivel_instrucao_crud,
@ -33,4 +32,7 @@ urlpatterns = [
ParlamentaresCadastroView.as_view(), name='parlamentares_cadastro'),
url(r'^parlamentares/(?P<pk>\d+)/(?P<pid>\d+)/editar$',
ParlamentaresEditarView.as_view(), name='parlamentares_editar'),
url(r'^mesa-diretora/$',
MesaDiretoraView.as_view(), name='mesa_diretora'),
]

112
parlamentares/views.py

@ -1,5 +1,6 @@
from re import sub
import sapl
from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, ButtonHolder, Fieldset, Layout, Submit
from django import forms
@ -9,15 +10,13 @@ from django.utils.html import strip_tags
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from django.views.generic.edit import FormMixin
from vanilla import GenericView
import sapl
from sapl.crud import build_crud
from vanilla import GenericView
from .models import (CargoMesa, Coligacao, Dependente, Filiacao, Legislatura,
Mandato, NivelInstrucao, Parlamentar, Partido,
SessaoLegislativa, SituacaoMilitar, TipoAfastamento,
TipoDependente)
from .models import (CargoMesa, Coligacao, ComposicaoMesa, Dependente,
Filiacao, Legislatura, Mandato, NivelInstrucao,
Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar,
TipoAfastamento, TipoDependente)
cargo_mesa_crud = build_crud(
CargoMesa, 'cargo_mesa', [
@ -376,3 +375,102 @@ class ParlamentaresEditarView(FormMixin, GenericView):
else:
return self.render_to_response(
{'form': form, 'legislatura_id': pk})
class MesaDiretoraForm(forms.Form):
pass
class MesaDiretoraView(FormMixin, GenericView):
template_name = "mesa_diretora/mesa_diretora.html"
def get_success_url(self):
return reverse('mesa_diretora')
def get(self, request, *args, **kwargs):
form = MesaDiretoraForm()
mesa = SessaoLegislativa.objects.filter(
legislatura=Legislatura.objects.last()).first(
).composicaomesa_set.all()
cargos_ocupados = [m.cargo for m in mesa]
cargos = CargoMesa.objects.all()
cargos_vagos = list(set(cargos) - set(cargos_ocupados))
parlamentares = Legislatura.objects.last().mandato_set.all()
parlamentares_ocupados = [m.parlamentar for m in mesa]
parlamentares_vagos = list(
set(
[p.parlamentar for p in parlamentares]) - set(
parlamentares_ocupados))
return self.render_to_response(
{'form': form,
'legislaturas': Legislatura.objects.all(
).order_by('-data_inicio'),
'legislatura_selecionada': Legislatura.objects.last(),
'sessoes': SessaoLegislativa.objects.filter(
legislatura=Legislatura.objects.last()),
'sessao_selecionada': SessaoLegislativa.objects.filter(
legislatura=Legislatura.objects.last()).first(),
'composicao_mesa': mesa,
'parlamentares': parlamentares_vagos,
'cargos_vagos': cargos_vagos
})
def post(self, request, *args, **kwargs):
form = MesaDiretoraForm(request.POST)
if 'Incluir' in request.POST:
composicao = ComposicaoMesa()
composicao.sessao_legislativa = SessaoLegislativa.objects.get(
id=form.data['sessao'])
composicao.parlamentar = Parlamentar.objects.get(
id=form.data['parlamentar'])
composicao.cargo = CargoMesa.objects.get(
id=form.data['cargo'])
composicao.save()
return self.form_valid(form)
elif 'Excluir' in request.POST:
if 'composicao_mesa' in request.POST:
ids = request.POST['composicao_mesa'].split(':')
ComposicaoMesa.objects.filter(
sessao_legislativa=form.data['sessao'],
parlamentar=ids[0],
cargo=ids[1]
).delete()
return self.form_valid(form)
else:
mesa = SessaoLegislativa.objects.filter(
legislatura_id=int(form.data['legislatura'])).first(
).composicaomesa_set.all()
cargos_ocupados = [m.cargo for m in mesa]
cargos = CargoMesa.objects.all()
cargos_vagos = list(set(cargos) - set(cargos_ocupados))
parlamentares = Legislatura.objects.get(
id=int(form.data['legislatura'])).mandato_set.all()
parlamentares_ocupados = [m.parlamentar for m in mesa]
parlamentares_vagos = list(
set(
[p.parlamentar for p in parlamentares]) - set(
parlamentares_ocupados))
return self.render_to_response(
{'form': form,
'legislaturas': Legislatura.objects.all(
).order_by('-data_inicio'),
'legislatura_selecionada': Legislatura.objects.get(
id=int(form.data['legislatura'])),
'sessoes': SessaoLegislativa.objects.filter(
legislatura_id=int(form.data['legislatura'])),
'sessao_selecionada': SessaoLegislativa.objects.filter(
id=int(form.data['sessao'])),
'composicao_mesa': mesa,
'parlamentares': parlamentares_vagos,
'cargos_vagos': cargos_vagos
})
return self.form_valid(form)

2
templates/base.html

@ -60,7 +60,7 @@
<ul class="nav left">
<li class="nav__item has-dropdown"><a class="nav__link">Institucional</a>
<ul class="nav__sub-nav dropdown">
<li class="nav__sub-item"><a class="nav__sub-link" href="#">Mesa Diretora</a></li>
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'mesa_diretora' %}">Mesa Diretora</a></li>
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'comissao:list' %}">Comissões</a></li>
<li class="nav__sub-item"><a class="nav__sub-link" href="#">Bancadas</a></li>
<li class="nav__sub-item"><a class="nav__sub-link" href="{% url 'parlamentares' %}">Parlamentares</a></li>

76
templates/mesa_diretora/mesa_diretora.html

@ -0,0 +1,76 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% block actions %} {% endblock %}
{% block detail_content %}
<form method="POST">
{% csrf_token %}
<fieldset>
<legend>Escolha da Legislatura e da Sessão Legislativa</legend>
<ul class="small-block-grid-2 medium-block-grid-2 large-block-grid-2">
<li>
<label>Escolha uma Legislatura</label>
<select name="legislatura" onChange="form.submit();">
{% for l in legislaturas %}
<option value="{{l.id}}" {% if l == legislatura_selecionada %} selected {% endif %}>
{{l}}
</option>
{% endfor %}
</select>
</li>
<li>
<label>Escolha uma Sessão Legislativa</label>
<select name="sessao" onChange="form.submit();">
{% for s in sessoes %}
<option value="{{s.id}}" {% if s == sessao_selecionada %} selected {% endif %}>
{{s}}
</option>
{% endfor %}
</select>
</li>
</ul>
</fieldset>
<fieldset>
<legend>Escolha da Composição da Mesa Diretora</legend>
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
<li>
<label>Composição da Mesa Diretora</label>
<select multiple size="5" name="composicao_mesa">
{% for p in composicao_mesa %}
<option value="{{p.parlamentar.id}}:{{p.cargo.id}}">
{{p.parlamentar}} || {{p.cargo}}
</option>
{% endfor %}
</select>
</li>
<li>
{% if cargos_vagos %} <input type="submit" name="Incluir" Value="Incluir" class="button primary" /> {% endif %}
<br />
<br />
<input type="submit" name="Excluir" Value="Excluir" class="button primary" />
</li>
{% if cargos_vagos %}
<li>
<label>Parlamentares</label>
<select name="parlamentar" id="parlamentar">
{% for p in parlamentares %}
<option value="{{p.id}}">{{p.nome_completo}}</option>
{% endfor %}
</select>
<select name="cargo" id="cargo">
{% for c in cargos_vagos %}
<option value="{{c.id}}">{{c}}</option>
{% endfor %}
</select>
</li>
{% endif %}
</ul>
</fieldset>
</form>
{% endblock detail_content %}
Loading…
Cancel
Save