Browse Source

Permite paginação de matérias no expediente e ordem do dia (#3086)

* Ajusta o SAPL à loucura de Sete Lagoas-MG

* adicionando paginacao a votacao em bloco para ordem do dia e expediente de tamanho 500

* Endereçando comentário de revisão

* ajuste de autopep8 da IDE

* add rolagens faltantes p matérias em algumas funcs

* Update sapl/sessao/views.py

Co-Authored-By: Edward <9326037+edwardoliveira@users.noreply.github.com>

* corrige sugestion

* Adaptando solução para leitura de materias ordem e expediente

* Conserta commit #9a3039ba

Co-authored-by: Ricardo Lima Canela <ricardolimacanela@gmail.com>
Co-authored-by: Leandro  Silva <leandroroberto.br@gmail.com>
Co-authored-by: Ulysses Lara <ulysses3353@gmail.com>
pull/3090/head
Edward 5 years ago
committed by GitHub
parent
commit
58bb6a51cb
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 277
      sapl/sessao/views.py
  2. 2
      sapl/templates/sessao/votacao/votacao_bloco.html

277
sapl/sessao/views.py

@ -8,7 +8,6 @@ from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
from django.db.models import Max, Q
from django.forms.utils import ErrorList
from django.http import JsonResponse
from django.http.response import Http404, HttpResponseRedirect
from django.utils import timezone
@ -17,7 +16,7 @@ from django.utils.decorators import method_decorator
from django.utils.html import strip_tags
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import FormView, ListView, TemplateView, CreateView, UpdateView
from django.views.generic import (FormView, ListView, TemplateView)
from django.views.generic.base import RedirectView
from django.views.generic.detail import DetailView
from django.views.generic.edit import FormMixin
@ -196,6 +195,8 @@ def abrir_votacao(request, pk, spk):
if not model:
raise Http404()
query_params = "?"
if (verifica_presenca(request, presenca_model, spk) and
verifica_votacoes_abertas(request) and
verifica_sessao_iniciada(request, spk)):
@ -206,8 +207,15 @@ def abrir_votacao(request, pk, spk):
sessao.save()
materia_votacao.save()
return HttpResponseRedirect(
reverse('sapl.sessao:' + redirect_url, kwargs={'pk': spk}))
if 'page' in request.GET:
query_params += 'page={}&'.format(request.GET['page'])
query_params += "#id{}".format(materia_votacao.materia.id)
success_url = reverse('sapl.sessao:' + redirect_url, kwargs={'pk': spk})
success_url += query_params
return HttpResponseRedirect(success_url)
def customize_link_materia(context, pk, has_permission, is_expediente):
@ -241,12 +249,13 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
turno = t[1]
break
title_materia = '''<a href=%s>%s</a> </br>
title_materia = """<a id=id%s href=%s>%s</a> </br>
<b>Processo:</b> %s </br>
<b>Autor:</b> %s </br>
<b>Protocolo:</b> %s </br>
<b>Turno:</b> %s </br>
''' % (url_materia,
""" % (obj.materia.id,
url_materia,
row[1][0],
numeracao if numeracao else '',
autor if autor else '',
@ -320,21 +329,28 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
'oid': obj.pk,
'mid': obj.materia_id})
page_number = ""
if 'page' in context:
#url += "?page={}".format(context['page'])
page_number = "<input type='hidden' name='page' value='%s' />" % context['page']
if has_permission:
if obj.tipo_votacao != LEITURA:
btn_registrar = '''
<form action="%s">
<input type="submit" class="btn btn-primary"
value="Registrar Votação" />
%s
</form>''' % (
url)
url, page_number)
else:
btn_registrar = '''
<form action="%s">
<input type="submit" class="btn btn-primary"
value="Registrar Leitura" />
%s
</form>''' % (
url)
url, page_number)
resultado = btn_registrar
else:
@ -343,14 +359,21 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
if is_expediente:
url = reverse('sapl.sessao:abrir_votacao', kwargs={
'pk': obj.pk,
'spk': obj.sessao_plenaria_id
'spk': obj.sessao_plenaria_id,
}) + '?tipo_materia=expediente'
if 'page' in context:
url += '&page=' + context['page']
else:
url = reverse('sapl.sessao:abrir_votacao', kwargs={
'pk': obj.pk,
'spk': obj.sessao_plenaria_id
}) + '?tipo_materia=ordem'
if 'page' in context:
url += '&page=' + context['page']
if has_permission:
if not obj.tipo_votacao == LEITURA:
btn_abrir = '''
@ -447,8 +470,10 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
'oid': obj.pk,
'mid': obj.materia_id})
resultado = ('<a href="%s">%s<br/><br/>%s</a>' %
(url,
resultado = (
'<a href="%s?page=%s">%s<br/><br/>%s</a>' % (
url,
context.get('page', 1),
resultado_descricao,
resultado_observacao))
else:
@ -507,7 +532,8 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
def get_presencas_generic(model, sessao, legislatura):
presentes = [p.parlamentar for p in model.objects.filter(sessao_plenaria=sessao)]
presentes = [p.parlamentar for p in model.objects.filter(
sessao_plenaria=sessao)]
parlamentares_mandato = Mandato.objects.filter(
legislatura=legislatura,
@ -586,6 +612,11 @@ class MateriaOrdemDiaCrud(MasterDetailCrud):
ordering = ['numero_ordem', 'materia', 'resultado']
def get_context_data(self, **kwargs):
if self.get_queryset().count() > 500:
self.paginate_by = 50
else:
self.paginate_by = None
context = super().get_context_data(**kwargs)
has_permition = self.request.user.has_module_perms(AppConfig.label)
return customize_link_materia(context, self.kwargs['pk'], has_permition, False)
@ -625,7 +656,17 @@ class ExpedienteMateriaCrud(MasterDetailCrud):
ordering = ['numero_ordem', 'materia', 'resultado']
def get_context_data(self, **kwargs):
if self.get_queryset().count() > 500:
self.paginate_by = 50
else:
self.paginate_by = None
context = super().get_context_data(**kwargs)
if self.request.GET.get('page'):
context['page'] = self.request.GET.get('page')
has_permition = self.request.user.has_module_perms(AppConfig.label)
return customize_link_materia(context, self.kwargs['pk'], has_permition, True)
@ -678,7 +719,8 @@ class OradorCrud(MasterDetailCrud):
sessao = SessaoPlenaria.objects.get(id=sessao_pk)
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
class CreateView(MasterDetailCrud.CreateView):
@ -694,14 +736,14 @@ class OradorCrud(MasterDetailCrud):
sessao = SessaoPlenaria.objects.get(id=sessao_pk)
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
def get_success_url(self):
return reverse('sapl.sessao:orador_list',
kwargs={'pk': self.kwargs['pk']})
class DetailView(MasterDetailCrud.DetailView):
def get_context_data(self, **kwargs):
@ -710,10 +752,10 @@ class OradorCrud(MasterDetailCrud):
sessao = SessaoPlenaria.objects.get(id=sessao_pk)
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
class UpdateView(MasterDetailCrud.UpdateView):
form_class = OradorForm
@ -730,10 +772,10 @@ class OradorCrud(MasterDetailCrud):
sessao = SessaoPlenaria.objects.get(id=sessao_pk)
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
class DeleteView(MasterDetailCrud.DeleteView):
def get_context_data(self, **kwargs):
@ -742,7 +784,8 @@ class OradorCrud(MasterDetailCrud):
sessao = SessaoPlenaria.objects.get(id=sessao_pk)
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
@ -756,17 +799,16 @@ class OradorExpedienteCrud(OradorCrud):
def get_initial(self):
return {'id_sessao': self.kwargs['pk']}
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
pk = context['root_pk']
sessao = SessaoPlenaria.objects.get(id=pk)
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
def get_success_url(self):
return reverse('sapl.sessao:oradorexpediente_list',
kwargs={'pk': self.kwargs['pk']})
@ -784,10 +826,10 @@ class OradorExpedienteCrud(OradorCrud):
sessao = SessaoPlenaria.objects.get(id=pk)
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
class ListView(MasterDetailCrud.ListView):
ordering = ['numero_ordem']
@ -797,7 +839,8 @@ class OradorExpedienteCrud(OradorCrud):
sessao = SessaoPlenaria.objects.get(id=pk)
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
class DetailView(MasterDetailCrud.DetailView):
@ -808,7 +851,8 @@ class OradorExpedienteCrud(OradorCrud):
sessao = SessaoPlenaria.objects.get(id=pk)
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
class DeleteView(MasterDetailCrud.DeleteView):
@ -819,9 +863,11 @@ class OradorExpedienteCrud(OradorCrud):
sessao = SessaoPlenaria.objects.get(id=sessao_pk)
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
class OradorOrdemDiaCrud(OradorCrud):
model = OradorOrdemDia
@ -946,7 +992,8 @@ class SessaoCrud(Crud):
sessao = context['object']
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
def get_initial(self):
@ -998,7 +1045,8 @@ class SessaoCrud(Crud):
sessao = context['object']
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
class DetailView(Crud.DetailView):
@ -1011,13 +1059,13 @@ class SessaoCrud(Crud):
return 'SessaoSolene'
return 'SessaoPlenaria'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
sessao = context['object']
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
@ -1056,7 +1104,8 @@ class PresencaView(FormMixin, PresencaMixin, DetailView):
sessao = context['object']
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
@method_decorator(permission_required(
@ -1156,7 +1205,8 @@ class PainelView(PermissionRequiredForAppCrudMixin, TemplateView):
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
@ -1383,7 +1433,8 @@ class MesaView(FormMixin, DetailView):
sessao = context['object']
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
def get_success_url(self):
@ -1603,7 +1654,8 @@ def get_identificacao_basica(sessao_plenaria):
],
'sessaoplenaria': sessao_plenaria}
if sessao_plenaria.tipo.nome == "Solene" and tema_solene:
context.update({'tema_solene': 'Tema da Sessão Solene: %s' % tema_solene})
context.update(
{'tema_solene': 'Tema da Sessão Solene: %s' % tema_solene})
return context
@ -1768,7 +1820,8 @@ def get_assinaturas(sessao_plenaria):
elif config_assinatura_ata == 'P' and presidente_dia and presidente_dia[0]:
context.update(
{'texto_assinatura': 'Assinatura do Presidente da Sessão'})
assinatura_presidente = [{'parlamentar': presidente_dia[0], 'cargo': "Presidente"}]
assinatura_presidente = [
{'parlamentar': presidente_dia[0], 'cargo': "Presidente"}]
context.update({'assinatura_mesa': assinatura_presidente})
return context
@ -2063,7 +2116,8 @@ class ResumoView(DetailView):
sessao = context['object']
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
def get(self, request, *args, **kwargs):
@ -2091,7 +2145,8 @@ class ExpedienteView(FormMixin, DetailView):
sessao = context['object']
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
@method_decorator(permission_required('sessao.add_expedientesessao'))
@ -2145,8 +2200,8 @@ class ExpedienteView(FormMixin, DetailView):
expedientes_salvos = [e.tipo.id for e in expedientes_sessao]
tipos_null = TipoExpediente.objects.all().exclude(id__in=expedientes_salvos).order_by('ordenacao', 'nome')
tipos_null = TipoExpediente.objects.all().exclude(
id__in=expedientes_salvos).order_by('ordenacao', 'nome')
expedientes = []
for e, t in zip(expedientes_sessao, tipos):
@ -2182,7 +2237,8 @@ class OcorrenciaSessaoView(FormMixin, DetailView):
sessao = context['object']
tipo_sessao = sessao.tipo
if tipo_sessao.nome == "Solene":
context.update({'subnav_template_name': 'sessao/subnav-solene.yaml'})
context.update(
{'subnav_template_name': 'sessao/subnav-solene.yaml'})
return context
def delete(self):
@ -2299,9 +2355,13 @@ class VotacaoEditView(SessaoPermissionMixin):
yield tipo
def get_success_url(self):
page = ''
if 'page' in self.request.GET:
page = '?page={}'.format(self.request.GET['page'])
pk = self.kwargs['pk']
return reverse('sapl.sessao:ordemdia_list',
kwargs={'pk': pk})
kwargs={'pk': pk}) + page
class VotacaoView(SessaoPermissionMixin):
@ -2447,9 +2507,13 @@ class VotacaoView(SessaoPermissionMixin):
yield tipo
def get_success_url(self):
page = ''
if 'page' in self.request.GET:
page = '?page={}'.format(self.request.GET['page'])
pk = self.kwargs['pk']
return reverse('sapl.sessao:ordemdia_list',
kwargs={'pk': pk})
kwargs={'pk': pk}) + page + "#id{}".format(self.kwargs['mid'])
def fechar_votacao_materia(materia):
@ -2566,6 +2630,10 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
form = self.get_form()
username = request.user.username
page = ''
if 'page' in self.request.GET:
page = '?page={}'.format(self.request.GET['page'])
if self.ordem:
ordem_id = kwargs['oid']
try:
@ -2597,12 +2665,19 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
if 'cancelar-votacao' in request.POST:
fechar_votacao_materia(materia_votacao)
if self.ordem:
return HttpResponseRedirect(reverse(
'sapl.sessao:ordemdia_list', kwargs={'pk': kwargs['pk']}))
return HttpResponseRedirect(
reverse(
'sapl.sessao:ordemdia_list',
kwargs={'pk': kwargs['pk']}
) + page + "#id{}".format(self.kwargs['mid'])
)
else:
return HttpResponseRedirect(reverse(
return HttpResponseRedirect(
reverse(
'sapl.sessao:expedientemateria_list',
kwargs={'pk': kwargs['pk']}))
kwargs={'pk': kwargs['pk']}
) + page + "#id{}".format(self.kwargs['mid'])
)
else:
if form.cleaned_data['resultado_votacao'] == None:
form.add_error(None, 'Não é possível finalizar a votação sem '
@ -2749,14 +2824,22 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
yield [parlamentar, voto.voto]
def get_success_url(self):
page = ''
if 'page' in self.request.GET:
page = '?page={}'.format(self.request.GET['page'])
pk = self.kwargs['pk']
if self.ordem:
return reverse('sapl.sessao:ordemdia_list',
kwargs={'pk': pk})
return reverse(
'sapl.sessao:ordemdia_list',
kwargs={'pk': pk}
) + page + "#id{}".format(self.kwargs['mid'])
elif self.expediente:
return reverse('sapl.sessao:expedientemateria_list',
kwargs={'pk': pk})
return reverse(
'sapl.sessao:expedientemateria_list',
kwargs={'pk': pk}
) + page + "#id{}".format(self.kwargs['mid'])
class VotacaoNominalEditAbstract(SessaoPermissionMixin):
@ -2874,14 +2957,22 @@ class VotacaoNominalEditAbstract(SessaoPermissionMixin):
yield tipo
def get_success_url(self):
page = ''
if 'page' in self.request.GET:
page = '?page={}'.format(self.request.GET['page'])
pk = self.kwargs['pk']
if self.ordem:
return reverse('sapl.sessao:ordemdia_list',
kwargs={'pk': pk})
return reverse(
'sapl.sessao:ordemdia_list',
kwargs={'pk': pk}
) + page + "#id{}".format(self.kwargs['mid'])
elif self.expediente:
return reverse('sapl.sessao:expedientemateria_list',
kwargs={'pk': pk})
return reverse(
'sapl.sessao:expedientemateria_list',
kwargs={'pk': pk}
) + page + "#id{}".format(self.kwargs['mid'])
class VotacaoNominalView(VotacaoNominalAbstract):
@ -2983,9 +3074,13 @@ class VotacaoNominalExpedienteDetailView(DetailView):
yield tipo
def get_success_url(self):
page = ''
if 'page' in self.request.GET:
page = '?page={}'.format(self.request.GET['page'])
pk = self.kwargs['pk']
return reverse('sapl.sessao:expedientemateria_list',
kwargs={'pk': pk})
kwargs={'pk': pk}) + page
class VotacaoSimbolicaTransparenciaDetailView(TemplateView):
@ -3170,9 +3265,15 @@ class VotacaoExpedienteView(SessaoPermissionMixin):
yield tipo
def get_success_url(self):
page = ''
if 'page' in self.request.GET:
page = '?page={}'.format(self.request.GET['page'])
pk = self.kwargs['pk']
return reverse('sapl.sessao:expedientemateria_list',
kwargs={'pk': pk})
return reverse(
'sapl.sessao:expedientemateria_list',
kwargs={'pk': pk}
) + page + "#id{}".format(self.kwargs['mid'])
class VotacaoExpedienteEditView(SessaoPermissionMixin):
@ -3185,9 +3286,15 @@ class VotacaoExpedienteEditView(SessaoPermissionMixin):
form_class = VotacaoEditForm
def get_success_url(self):
page = ''
if 'page' in self.request.GET:
page = '?page={}'.format(self.request.GET['page'])
pk = self.kwargs['pk']
return reverse('sapl.sessao:expedientemateria_list',
kwargs={'pk': pk})
return reverse(
'sapl.sessao:expedientemateria_list',
kwargs={'pk': pk}
) + page + "#id{}".format(self.kwargs['mid'])
def get_tipos_votacao(self):
for tipo in TipoResultadoVotacao.objects.all():
@ -3306,7 +3413,8 @@ class PautaSessaoDetailView(DetailView):
context.update({'basica': [
_('Tipo de Sessão: %(tipo)s') % {'tipo': self.object.tipo},
_('Abertura: %(abertura)s - %(hora_inicio)s') % {'abertura': abertura, 'hora_inicio':hora_inicio},
_('Abertura: %(abertura)s - %(hora_inicio)s') % {
'abertura': abertura, 'hora_inicio': hora_inicio},
_('Encerramento: %(encerramento)s - %(hora_fim)s') % {
'encerramento': encerramento, 'hora_fim': hora_fim},
]})
@ -3415,7 +3523,8 @@ class PautaSessaoDetailView(DetailView):
context.update({'materias_ordem': materias_ordem})
context.update({'subnav_template_name': 'sessao/pauta_subnav.yaml'})
is_pdf = True if request.build_absolute_uri().split('/')[-1] == 'pdf' else False
is_pdf = True if request.build_absolute_uri().split(
'/')[-1] == 'pdf' else False
if is_pdf:
return relatorio_pauta_sessao_weasy(self, request, context)
@ -3820,6 +3929,7 @@ class VotacaoEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView):
template_name = 'sessao/votacao/votacao_bloco.html'
app_label = AppConfig.label
expediente = True
paginate_by = 100
def get_queryset(self):
return ExpedienteMateria.objects.filter(sessao_plenaria_id=self.kwargs['pk'],
@ -3845,6 +3955,7 @@ class VotacaoEmBlocoExpediente(PermissionRequiredForAppCrudMixin, ListView):
class VotacaoEmBlocoOrdemDia(VotacaoEmBlocoExpediente):
expediente = False
paginate_by = 100
def get_queryset(self):
return OrdemDia.objects.filter(sessao_plenaria_id=self.kwargs['pk'],
@ -4388,7 +4499,6 @@ class RetiradaPautaCrud(MasterDetailCrud):
pass
class AbstractLeituraView(FormView):
template_name = 'sessao/votacao/leitura_form.html'
success_url = '/'
@ -4396,7 +4506,8 @@ class AbstractLeituraView(FormView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['materia'] = MateriaLegislativa.objects.get(id=self.kwargs['mid'])
context['materia'] = MateriaLegislativa.objects.get(
id=self.kwargs['mid'])
return context
def get_initial(self):
@ -4406,11 +4517,13 @@ class AbstractLeituraView(FormView):
initial['materia__ementa'] = materia.ementa
if self.expediente:
expediente = ExpedienteMateria.objects.get(id=self.kwargs['oid'])
instance = RegistroLeitura.objects.filter(materia=materia, expediente=expediente)
instance = RegistroLeitura.objects.filter(
materia=materia, expediente=expediente)
initial['expediente'] = expediente
else:
ordem = OrdemDia.objects.get(id=self.kwargs['oid'])
instance = RegistroLeitura.objects.filter(materia=materia, ordem=ordem)
instance = RegistroLeitura.objects.filter(
materia=materia, ordem=ordem)
initial['ordem'] = ordem
initial['instance'] = instance
initial['user'] = self.request.user
@ -4430,21 +4543,30 @@ class AbstractLeituraView(FormView):
return super().form_valid(form)
def get_success_url(self):
page = ''
if 'page' in self.request.GET:
page = '?page={}'.format(self.request.GET['page'])
pk = self.kwargs['pk']
if self.expediente:
url = reverse('sapl.sessao:expedientemateria_list',
kwargs={'pk': pk})
kwargs={'pk': pk}) + page
else:
url = reverse('sapl.sessao:ordemdia_list',
kwargs={'pk': pk})
kwargs={'pk': pk}) + page
return url
def cancel_url(self):
page = ''
if 'page' in self.request.GET:
page = '?page={}'.format(self.request.GET['page'])
url = reverse('sapl.sessao:retirar_leitura',
kwargs={
'pk': self.kwargs['pk'],
'iso': 1 if not self.expediente else 0,
'oid': self.kwargs['oid']})
'oid': self.kwargs['oid'],
},
) + page
return url
@ -4459,19 +4581,24 @@ class OrdemDiaLeituraView(AbstractLeituraView):
@permission_required('sessao.change_expedientemateria',
'sessao.change_ordemdia')
def retirar_leitura(request, pk, iso, oid):
page = ''
if 'page' in request.GET:
page = '?page={}'.format(request.GET['page'])
is_ordem = bool(int(iso))
if not is_ordem:
ordem_expediente = ExpedienteMateria.objects.get(id=oid)
RegistroLeitura.objects.filter(materia=ordem_expediente.materia, expediente=ordem_expediente).delete()
RegistroLeitura.objects.filter(
materia=ordem_expediente.materia, expediente=ordem_expediente).delete()
succ_url = reverse('sapl.sessao:expedientemateria_list',
kwargs={'pk': pk})
kwargs={'pk': pk}) + page
else:
ordem_expediente = OrdemDia.objects.get(id=oid)
RegistroLeitura.objects.filter(materia=ordem_expediente.materia, ordem=ordem_expediente).delete()
RegistroLeitura.objects.filter(
materia=ordem_expediente.materia, ordem=ordem_expediente).delete()
succ_url = reverse('sapl.sessao:ordemdia_list',
kwargs={'pk': pk})
kwargs={'pk': pk}) + page
ordem_expediente.resultado = ""
ordem_expediente.votacao_aberta = False
ordem_expediente.save()
return HttpResponseRedirect(succ_url)

2
sapl/templates/sessao/votacao/votacao_bloco.html

@ -77,9 +77,11 @@
<p></p>
</td>
</tr>
{% endif %}
{% endfor %}
</table>
{% include 'paginacao.html' %}
<table class="table table-striped table-bordered" style="display:none" id="nenhuma_mat">

Loading…
Cancel
Save