Browse Source

fix: Ajustes na Leitura em bloco, inclusao da funcionalidade para Ordem do dia

pull/3618/head
joao 2 years ago
parent
commit
59bced7c19
  1. 5
      sapl/sessao/urls.py
  2. 83
      sapl/sessao/views.py
  3. 4
      sapl/templates/sessao/leitura/leitura_bloco.html
  4. 3
      sapl/templates/sessao/subnav.yaml

5
sapl/sessao/urls.py

@ -31,7 +31,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
sessao_legislativa_legislatura_ajax,
VotacaoEmBlocoOrdemDia, VotacaoEmBlocoExpediente,
VotacaoEmBlocoSimbolicaView, VotacaoEmBlocoNominalView,
LeituraEmBlocoExpediente,
LeituraEmBlocoExpediente, LeituraEmBlocoOrdemDia,
recuperar_nome_tipo_sessao,
ExpedienteLeituraView,
OrdemDiaLeituraView,
@ -162,6 +162,9 @@ urlpatterns = [
url(r'^sessao/(?P<pk>\d+)/leitura_bloco_expediente$',
LeituraEmBlocoExpediente.as_view(),
name='leitura_bloco_expediente'),
url(r'^sessao/(?P<pk>\d+)/leitura_bloco_ordem_dia$',
LeituraEmBlocoOrdemDia.as_view(),
name='leitura_bloco_ordem_dia'),
url(r'^sessao/(?P<pk>\d+)/resumo$',
ResumoView.as_view(), name='resumo'),
url(r'^sessao/(?P<pk>\d+)/resumo_ata$',

83
sapl/sessao/views.py

@ -274,8 +274,8 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
exist_leitura = obj.registroleitura_set.filter(
materia=obj.materia).exists()
if (obj.tipo_votacao != 4 and not exist_resultado and not exist_retirada) or \
(obj.tipo_votacao == 4 and not exist_leitura):
if (obj.tipo_votacao != LEITURA and not exist_resultado and not exist_retirada) or \
(obj.tipo_votacao == LEITURA and not exist_leitura):
if obj.votacao_aberta:
url = ''
if is_expediente:
@ -4384,7 +4384,7 @@ class JustificativaAusenciaCrud(MasterDetailCrud):
pass
class LeituraEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView):
class LeituraEmBloco(PermissionRequiredForAppCrudMixin, ListView):
template_name = 'sessao/leitura/leitura_bloco.html'
app_label = AppConfig.label
expediente = True
@ -4392,7 +4392,7 @@ class LeituraEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView):
def get_queryset(self):
return ExpedienteMateria.objects.filter(sessao_plenaria_id=self.kwargs['pk'],
retiradapauta=None, tipo_votacao=4, registroleitura__materia=None)
retiradapauta=None, tipo_votacao=LEITURA, registroleitura__materia=None)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
@ -4413,46 +4413,35 @@ class LeituraEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView):
def post(self, request, *args, **kwargs):
if 'marcadas_4' in request.POST:
models = None
selectedlist = request.POST.getlist('marcadas_4')
if request.POST['origem'] == 'ordem':
models = OrdemDia.objects.filter(id__in=request.POST.getlist('marcadas_4'))
models = OrdemDia.objects.filter(id__in=selectedlist)
elif request.POST['origem'] == 'expediente':
models = ExpedienteMateria.objects.filter(id__in=request.POST.getlist('marcadas_4'))
models = ExpedienteMateria.objects.filter(id__in=selectedlist)
if models is None:
if not models:
messages.add_message(self.request, messages.ERROR,
_('Impossível localizar as matérias selecionadas'))
return self.get(request, self.kwargs)
else:
for m in models:
try:
obj = None
if isinstance(m, ExpedienteMateria):
obj = RegistroLeitura.objects.filter(materia=m.materia, expediente=m).delete()
obj = RegistroLeitura()
obj.expediente = m
elif isinstance(m, OrdemDia):
obj = RegistroLeitura.objects.filter(materia=m.materia, ordem=m).delete()
obj = RegistroLeitura()
obj.ordem = m
else:
messages.add_message(self.request, messages.ERROR,
_('Tipo de Pauta nao encontrado'))
return self.get(request, self.kwargs)
obj.materia = m.materia
obj.observacao = request.POST['observacao']
obj.user = self.request.user
obj.ip = get_client_ip(self.request)
obj.save()
except Exception as e:
messages.add_message(self.request, messages.ERROR,
_('Erro ao salvar registro de Leitura, por favor, refaça a operação'))
return self.get(request, self.kwargs)
else:
m.resultado = "Matéria lida"
m.votacao_aberta = False
m.save()
materias = [m.materia for m in models]
RegistroLeitura.objects.filter(materia__in=materias).delete()
leituras = []
for m in models:
obj = None
if isinstance(m, ExpedienteMateria):
obj = RegistroLeitura(expediente=m, materia=m.materia,
observacao=request.POST['observacao'],
user=self.request.user,
ip=get_client_ip(self.request))
elif isinstance(m, OrdemDia):
obj = RegistroLeitura(ordem=m, materia=m.materia,
observacao=request.POST['observacao'],
user=self.request.user,
ip=get_client_ip(self.request))
leituras.append(obj)
RegistroLeitura.objects.bulk_create(leituras)
else:
messages.add_message(self.request, messages.ERROR, _('Nenhuma matéria selecionada para leitura em Bloco'))
return self.get(request, self.kwargs)
@ -4468,6 +4457,24 @@ class LeituraEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView):
kwargs={'pk': self.kwargs['pk']})
class LeituraEmBlocoExpediente(LeituraEmBloco):
expediente = True
paginate_by = 100
def get_queryset(self):
return ExpedienteMateria.objects.filter(sessao_plenaria_id=self.kwargs['pk'],
retiradapauta=None, tipo_votacao=LEITURA, registroleitura__materia=None)
class LeituraEmBlocoOrdemDia(LeituraEmBloco):
expediente = False
paginate_by = 100
def get_queryset(self):
return OrdemDia.objects.filter(sessao_plenaria_id=self.kwargs['pk'],
retiradapauta=None, tipo_votacao=LEITURA, registroleitura__materia=None)
class VotacaoEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView):
template_name = 'sessao/votacao/votacao_bloco.html'
app_label = AppConfig.label

4
sapl/templates/sessao/leitura/leitura_bloco.html

@ -38,7 +38,7 @@
<div class="checkbox" id="check_all">
<label for="id_check_all">
<input type="checkbox" id="id_check_all" onchange="checkAll(this)" /> Marcar/Desmarcar Todos
<input type="checkbox" id="id_check_all" onchange="toggleCheck(this)" /> Marcar/Desmarcar Todos
</label>
</div>
@ -103,7 +103,7 @@
{% block extra_js %}
<script>
function checkAll(elem) {
function toggleCheck(elem) {
let checkboxes = document.getElementsByName('marcadas_4');
for (let i = 0; i < checkboxes.length; i++) {
if (checkboxes[i].type == 'checkbox')

3
sapl/templates/sessao/subnav.yaml

@ -51,6 +51,9 @@
- title: {% trans 'Votação em Bloco' %}
url: votacao_bloco_ordemdia
check_permission: sessao.add_sessaoplenaria
- title: {% trans 'Leitura em Bloco' %}
url: leitura_bloco_ordem_dia
check_permission: sessao.add_sessaoplenaria
- title: {% trans 'Copiar Matérias para Sessão Posterior' %}
url: transf_mat_ordemdia
check_permission: sessao.add_sessaoplenaria

Loading…
Cancel
Save