Browse Source

Inclusão/exclusão da presença dos parlamentares na Sessão Plenária e Ordem do Dia (#1173)

* Exibição e inclusão/exclusão da presença dos parlamentares na Sessão Plenária e Ordem do Dia

* alterações arquivo views.py
pull/1120/merge
cristian-longhi 8 years ago
committed by Edward
parent
commit
4120edf8db
  1. 58
      sapl/sessao/views.py
  2. 55
      sapl/templates/sessao/presenca.html
  3. 55
      sapl/templates/sessao/presenca_ordemdia.html

58
sapl/sessao/views.py

@ -30,7 +30,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
@ -123,6 +123,7 @@ def abrir_votacao_ordem_view(request, pk, spk):
reverse('sapl.sessao:ordemdia_list', kwargs={'pk': spk}))
def put_link_materia(context):
for i, row in enumerate(context['rows']):
materia = context['object_list'][i].materia
@ -132,6 +133,21 @@ def put_link_materia(context):
context['rows'][i][1] = (row[1][0], url_materia)
return context
def get_presencas_generic(model, sessao, legislatura):
presencas = model.objects.filter(
sessao_plenaria=sessao)
presentes = [p.parlamentar for p in presencas]
mandato = Mandato.objects.filter(
legislatura=legislatura)
for m in mandato:
if m.parlamentar in presentes:
yield (m.parlamentar, True)
else:
yield (m.parlamentar, False)
class MateriaOrdemDiaCrud(MasterDetailCrud):
model = OrdemDia
@ -554,32 +570,16 @@ class SessaoPermissionMixin(PermissionRequiredForAppCrudMixin,
class PresencaMixin:
def get_presencas(self):
self.object = self.get_object()
presencas = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=self.object.id
)
presentes = [p.parlamentar for p in presencas]
for parlamentar in Parlamentar.objects.filter(ativo=True):
if parlamentar in presentes:
yield (parlamentar, True)
else:
yield (parlamentar, False)
return get_presencas_generic(
SessaoPlenariaPresenca,
self.object,
self.object.legislatura)
def get_presencas_ordem(self):
self.object = self.get_object()
presencas = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.object.id
)
presentes = [p.parlamentar for p in presencas]
for parlamentar in Parlamentar.objects.filter(ativo=True):
if parlamentar in presentes:
yield (parlamentar, True)
else:
yield (parlamentar, False)
return get_presencas_generic(
PresencaOrdemDia,
self.object,
self.object.legislatura)
class PresencaView(FormMixin, PresencaMixin, DetailView):
@ -605,13 +605,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_inativos')
# 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()
@ -713,13 +713,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_inativos')
# 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()

55
sapl/templates/sessao/presenca.html

@ -17,17 +17,37 @@
</label>
</div>
</div>
<br />
<div class="controls">
{% for parlamentar, check in view.get_presencas %}
<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 %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label>
</div>
{% endfor %}
</div>
<br />
<div class="controls">
<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 class="controls">
{% for parlamentar, check in view.get_presencas %}
{% if parlamentar.ativo %}
<div class="checkbox">
<label for="id_presenca_{{forloop.counter}}">
<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>
{% else %}
<div class="checkbox inativos" style="display:none;">
<label for="id_presenca_{{forloop.counter}}">
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca_inativos" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label>
</div>
{% endif %}
{% endfor %}
</div>
<br />
<input type="submit" value="Salvar" class="btn btn-primary" />
@ -55,10 +75,21 @@
{% 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_inativos]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
}
}
function escondeInativos() {
$(".inativos").toggle();
}
</script>
{% endblock %}

55
sapl/templates/sessao/presenca_ordemdia.html

@ -17,19 +17,39 @@
</label>
</div>
</div>
<br>
<br />
<div class="controls">
{% for parlamentar, check in view.get_presencas_ordem %}
<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 %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label>
<label for="id_ativos">
<input type="checkbox" name="ativos" id="id_ativos" onchange="escondeInativos()" checked /> Exibir somente parlamentares ativos
</label>
</div>
{% endfor %}
</div>
<br />
<div class="controls">
{% for parlamentar, check in view.get_presencas_ordem %}
{% if parlamentar.ativo %}
<div class="checkbox">
<label for="id_presenca_{{forloop.counter}}">
<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>
{% else %}
<div class="checkbox inativos" style="display:none;">
<label for="id_presenca_{{forloop.counter}}">
<input type="checkbox" id="id_presenca_{{forloop.counter}}" name="presenca_inativos" value="{{ parlamentar.id }}" {% if check %} checked {% endif %}/>
{{ parlamentar.nome_parlamentar }} / {{ parlamentar.filiacao_atual }}
</label>
</div>
{% endif %}
{% endfor %}
</div>
<br />
<input type="submit" value="Salvar" class="btn btn-primary" />
</form>
@ -56,10 +76,21 @@
{% block extra_js %}
<script language="JavaScript">
function checkAll(event) {
$('[name=presenca]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
}
$('[name=presenca_ativos]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
if (($('[name=ativos]').is(':checked')) == false) {
$('[name=presenca_inativos]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
}
}
function escondeInativos() {
$(".inativos").toggle();
}
</script>
{% endblock %}

Loading…
Cancel
Save