Browse Source

Ajusta exibição de Parlamentares na Sessão Plenária e na Ordem do Dia

pull/1137/head
cristian-longhi 9 years ago
parent
commit
d1b170b60a
  1. 70
      sapl/sessao/views.py
  2. 47
      sapl/templates/sessao/presenca.html
  3. 50
      sapl/templates/sessao/presenca_ordemdia.html

70
sapl/sessao/views.py

@ -29,7 +29,7 @@ from sapl.materia.models import (Autoria, DocumentoAcessorio,
from sapl.materia.views import MateriaLegislativaPesquisaView
from sapl.norma.models import NormaJuridica
from sapl.parlamentares.models import (Filiacao, Legislatura, Parlamentar,
SessaoLegislativa)
SessaoLegislativa, Mandato) ###
from sapl.sessao.apps import AppConfig
from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm
@ -533,7 +533,7 @@ class SessaoPermissionMixin(PermissionRequiredForAppCrudMixin,
class PresencaMixin:
def get_presencas(self):
def get_presencas_demais(self):
self.object = self.get_object()
presencas = SessaoPlenariaPresenca.objects.filter(
@ -541,13 +541,39 @@ class PresencaMixin:
)
presentes = [p.parlamentar for p in presencas]
for parlamentar in Parlamentar.objects.filter(ativo=True):
mandato = Mandato.objects.filter(
legislatura_id=self.object.legislatura_id)
mandato_parlamentar = [p.parlamentar for p in mandato]
for parlamentar in mandato_parlamentar:
if parlamentar in Parlamentar.objects.filter(ativo=False):
if parlamentar in presentes:
yield (parlamentar, True)
else:
yield (parlamentar, False)
def get_presencas_ativos(self):
self.object = self.get_object()
presencas = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=self.object.id
)
presentes = [p.parlamentar for p in presencas]
mandato = Mandato.objects.filter(
legislatura_id=self.object.legislatura_id)
mandato_parlamentar = [p.parlamentar for p in mandato]
for parlamentar in mandato_parlamentar:
if parlamentar in Parlamentar.objects.filter(ativo=True):
if parlamentar in presentes:
yield (parlamentar, True)
else:
yield (parlamentar, False)
def get_presencas_ordem(self):
def get_presencas_ordem_demais(self):
self.object = self.get_object()
presencas = PresencaOrdemDia.objects.filter(
@ -555,7 +581,33 @@ class PresencaMixin:
)
presentes = [p.parlamentar for p in presencas]
for parlamentar in Parlamentar.objects.filter(ativo=True):
mandato = Mandato.objects.filter(
legislatura_id=self.object.legislatura_id)
mandato_parlamentar = [p.parlamentar for p in mandato]
for parlamentar in mandato_parlamentar:
if parlamentar in Parlamentar.objects.filter(ativo=False):
if parlamentar in presentes:
yield (parlamentar, True)
else:
yield (parlamentar, False)
def get_presencas_ordem_ativos(self):
self.object = self.get_object()
presencas = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.object.id
)
presentes = [p.parlamentar for p in presencas]
mandato = Mandato.objects.filter(
legislatura_id=self.object.legislatura_id)
mandato_parlamentar = [p.parlamentar for p in mandato]
for parlamentar in mandato_parlamentar:
if parlamentar in Parlamentar.objects.filter(ativo=True):
if parlamentar in presentes:
yield (parlamentar, True)
else:
@ -585,13 +637,13 @@ class PresencaView(FormMixin, PresencaMixin, DetailView):
sessao_plenaria_id=self.object.id)
# Id dos parlamentares presentes
marcados = request.POST.getlist('presenca')
marcados = request.POST.getlist('presenca_ativos') + request.POST.getlist('presenca_demais')
# Deletar os que foram desmarcadors
deletar = set(set(presentes_banco) - set(marcados))
for d in deletar:
SessaoPlenariaPresenca.objects.filter(
parlamentar_id=d.parlamentar_id).delete()
parlamentar_id=d.parlamentar_id, sessao_plenaria_id=self.object.id).delete()
for p in marcados:
sessao = SessaoPlenariaPresenca()
@ -693,13 +745,13 @@ class PresencaOrdemDiaView(FormMixin, PresencaMixin, DetailView):
sessao_plenaria_id=pk)
# Id dos parlamentares presentes
marcados = request.POST.getlist('presenca')
marcados = request.POST.getlist('presenca_ativos') + request.POST.getlist('presenca_demais')
# Deletar os que foram desmarcadors
deletar = set(set(presentes_banco) - set(marcados))
for d in deletar:
PresencaOrdemDia.objects.filter(
parlamentar_id=d.parlamentar_id).delete()
parlamentar_id=d.parlamentar_id, sessao_plenaria_id=self.object.id).delete()
for p in marcados:
ordem = PresencaOrdemDia()

47
sapl/templates/sessao/presenca.html

@ -17,19 +17,45 @@
</label>
</div>
</div>
<br />
<div class="controls">
{% for parlamentar, check in view.get_presencas %}
<div class="checkbox">
<label for="id_ativos">
<input type="checkbox" name="ativos" id="id_ativos" onchange="escondeInativos()" checked /> Exibir somente parlamentares ativos
</label>
</div>
</div>
<br />
<div id="ativos">
<div class="controls">
{% for parlamentar, check in view.get_presencas_ativos %}
<div class="checkbox">
<label for="id_presenca_{{forloop.counter}}">
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca_ativos" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label>
</div>
{% endfor %}
</div>
</div>
<div id="demais" style="display:none;">
<div class="controls">
{% for parlamentar, check in view.get_presencas_demais %}
<div class="checkbox">
<label for="id_presenca_{{forloop.counter}}">
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca_demais" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label>
</div>
{% endfor %}
</div>
</div>
<br />
<input type="submit" value="Salvar" class="btn btn-primary" />
</form>
@ -55,10 +81,25 @@
{% block extra_js %}
<script language="JavaScript">
function checkAll(event) {
$('[name=presenca]').each(function() {
$('[name=presenca_ativos]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
if (($('[name=ativos]').is(':checked')) == false) {
$('[name=presenca_demais]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
}
}
function escondeInativos() {
if ($('[name=ativos]').is(':checked')) {
document.getElementById("demais").style.display = 'none';
} else {
document.getElementById("demais").style.display = 'block';
}
}
</script>
{% endblock %}

50
sapl/templates/sessao/presenca_ordemdia.html

@ -17,18 +17,45 @@
</label>
</div>
</div>
<br>
<br />
<div class="controls">
{% for parlamentar, check in view.get_presencas_ordem %}
<div class="checkbox">
<label for="id_ativos">
<input type="checkbox" name="ativos" id="id_ativos" onchange="escondeInativos()" checked /> Exibir somente parlamentares ativos
</label>
</div>
</div>
<br />
<div id="ativos">
<div class="controls">
{% for parlamentar, check in view.get_presencas_ordem_ativos %}
<div class="checkbox">
<label for="id_presenca_{{forloop.counter}}">
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca_ativos" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label>
</div>
{% endfor %}
</div>
</div>
<div id="demais" style="display:none;">
<div class="controls">
{% for parlamentar, check in view.get_presencas_ordem_demais %}
<div class="checkbox">
<label for="id_presenca_{{forloop.counter}}">
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca_demais" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label>
</div>
{% endfor %}
</div>
</div>
<br />
<input type="submit" value="Salvar" class="btn btn-primary" />
@ -56,10 +83,25 @@
{% block extra_js %}
<script language="JavaScript">
function checkAll(event) {
$('[name=presenca]').each(function() {
$('[name=presenca_ativos]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
if (($('[name=ativos]').is(':checked')) == false) {
$('[name=presenca_demais]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
}
}
function escondeInativos() {
if ($('[name=ativos]').is(':checked')) {
document.getElementById("demais").style.display = 'none';
} else {
document.getElementById("demais").style.display = 'block';
}
}
</script>
{% endblock %}

Loading…
Cancel
Save