diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 53b4f7cfa..bd42e4788 100755 --- a/sapl/sessao/views.py +++ b/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 @@ -49,7 +48,7 @@ from .models import (Bancada, CargoBancada, CargoMesa, PresencaOrdemDia, RegistroVotacao, ResumoOrdenacao, SessaoPlenaria, SessaoPlenariaPresenca, TipoExpediente, TipoResultadoVotacao, TipoSessaoPlenaria, VotoParlamentar, TipoRetiradaPauta, - RetiradaPauta, TipoJustificativa, JustificativaAusencia, OradorOrdemDia, + RetiradaPauta, TipoJustificativa, JustificativaAusencia, OradorOrdemDia, ORDENACAO_RESUMO, RegistroLeitura) @@ -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 = '''%s
+ title_materia = """%s
Processo: %s
Autor: %s
Protocolo: %s
Turno: %s
- ''' % (url_materia, + """ % (obj.materia.id, + url_materia, row[1][0], numeracao if numeracao else '', autor if autor else '', @@ -263,9 +272,9 @@ def customize_link_materia(context, pk, has_permission, is_expediente): materia=obj.materia).exists() 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): + (obj.tipo_votacao == 4 and not exist_leitura): if obj.votacao_aberta: url = '' if is_expediente: @@ -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 = "" % context['page'] + if has_permission: if obj.tipo_votacao != LEITURA: btn_registrar = '''
+ %s
''' % ( - url) + url, page_number) else: btn_registrar = '''
+ %s
''' % ( - 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,10 +470,12 @@ def customize_link_materia(context, pk, has_permission, is_expediente): 'oid': obj.pk, 'mid': obj.materia_id}) - resultado = ('%s

%s
' % - (url, - resultado_descricao, - resultado_observacao)) + resultado = ( + '%s

%s
' % ( + url, + context.get('page', 1), + resultado_descricao, + resultado_observacao)) else: if obj.tipo_votacao == NOMINAL: @@ -507,12 +532,13 @@ 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, - data_inicio_mandato__lte=sessao.data_inicio, - data_fim_mandato__gte=sessao.data_inicio + legislatura=legislatura, + data_inicio_mandato__lte=sessao.data_inicio, + data_fim_mandato__gte=sessao.data_inicio ).distinct().order_by( 'parlamentar__nome_parlamentar') @@ -527,14 +553,14 @@ class TipoExpedienteCrud(CrudAux): model = TipoExpediente class DeleteView(CrudAux.DeleteView): - + def delete(self, *args, **kwargs): self.object = self.get_object() - - # Se todas as referências a este tipo forem de conteúdo vazio, + + # Se todas as referências a este tipo forem de conteúdo vazio, # significa que pode ser apagado if self.object.expedientesessao_set.filter(conteudo='').count() == \ - self.object.expedientesessao_set.all().count(): + self.object.expedientesessao_set.all().count(): self.object.expedientesessao_set.all().delete() return CrudAux.DeleteView.delete(self, *args, **kwargs) @@ -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,16 +799,15 @@ 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', @@ -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,9 +851,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 DeleteView(MasterDetailCrud.DeleteView): def get_context_data(self, **kwargs): @@ -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,9 +1433,10 @@ 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): pk = self.kwargs['pk'] return reverse('sapl.sessao:mesa', kwargs={'pk': pk}) @@ -1600,10 +1651,11 @@ def get_identificacao_basica(sessao_plenaria): 'abertura': abertura, 'hora_inicio': sessao_plenaria.hora_inicio}, _('Encerramento: %(encerramento)s %(hora_fim)s') % { 'encerramento': encerramento, 'hora_fim': sessao_plenaria.hora_fim}, - ], + ], '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): @@ -2367,7 +2427,7 @@ class VotacaoView(SessaoPermissionMixin): ordem_id = kwargs['oid'] ordem = OrdemDia.objects.get(id=ordem_id) - + presentes_id = [ presente.parlamentar.id for presente in PresencaOrdemDia.objects.filter( sessao_plenaria_id=self.kwargs['pk'] @@ -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( - 'sapl.sessao:expedientemateria_list', - kwargs={'pk': kwargs['pk']})) + return HttpResponseRedirect( + reverse( + 'sapl.sessao:expedientemateria_list', + 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): @@ -3052,7 +3147,7 @@ class VotacaoExpedienteView(SessaoPermissionMixin): expediente_id = kwargs['oid'] expediente = ExpedienteMateria.objects.get(id=expediente_id) - + presentes_id = [ presente.parlamentar.id for presente in SessaoPlenariaPresenca.objects.filter( sessao_plenaria_id=self.kwargs['pk'] @@ -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(): @@ -3288,8 +3395,8 @@ class PautaSessaoDetailView(DetailView): model = SessaoPlenaria def get(self, request, *args, **kwargs): - from sapl.relatorios.views import relatorio_pauta_sessao_weasy # Evitar import ciclico - + from sapl.relatorios.views import relatorio_pauta_sessao_weasy # Evitar import ciclico + self.object = self.get_object() context = self.get_context_data(object=self.object) @@ -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,10 +3523,11 @@ 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) + return relatorio_pauta_sessao_weasy(self, request, context) else: return self.render_to_response(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'], @@ -3881,7 +3992,7 @@ class VotacaoEmBlocoSimbolicaView(PermissionRequiredForAppCrudMixin, TemplateVie if request.POST['origem'] == 'ordem': ordens = OrdemDia.objects.filter( id__in=request.POST.getlist('marcadas_1')) - + presentes_id = [ presente.parlamentar.id for presente in PresencaOrdemDia.objects.filter( sessao_plenaria_id=self.kwargs['pk'] @@ -3900,7 +4011,7 @@ class VotacaoEmBlocoSimbolicaView(PermissionRequiredForAppCrudMixin, TemplateVie else: expedientes = ExpedienteMateria.objects.filter( id__in=request.POST.getlist('marcadas_1')) - + presentes_id = [ presente.parlamentar.id for presente in SessaoPlenariaPresenca.objects.filter( sessao_plenaria_id=self.kwargs['pk'] @@ -4040,7 +4151,7 @@ class VotacaoEmBlocoSimbolicaView(PermissionRequiredForAppCrudMixin, TemplateVie if self.request.POST['origem'] == 'ordem': ordens = OrdemDia.objects.filter( id__in=self.request.POST.getlist('ordens')) - + presentes_id = [ presente.parlamentar.id for presente in PresencaOrdemDia.objects.filter( sessao_plenaria_id=self.kwargs['pk'] @@ -4054,12 +4165,12 @@ class VotacaoEmBlocoSimbolicaView(PermissionRequiredForAppCrudMixin, TemplateVie qtde_ativos = len(presenca_ativos) context.update({'ordens': ordens, - 'total_presentes': qtde_presentes, + 'total_presentes': qtde_presentes, 'total_votantes': qtde_ativos}) elif self.request.POST['origem'] == 'expediente': expedientes = ExpedienteMateria.objects.filter( id__in=self.request.POST.getlist('expedientes')) - + presentes_id = [ presente.parlamentar.id for presente in SessaoPlenariaPresenca.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']}) + kwargs={ + 'pk': self.kwargs['pk'], + 'iso': 1 if not self.expediente else 0, + '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) \ No newline at end of file + return HttpResponseRedirect(succ_url) diff --git a/sapl/templates/sessao/votacao/votacao_bloco.html b/sapl/templates/sessao/votacao/votacao_bloco.html index ac9b10ce9..bc9fc7ce8 100644 --- a/sapl/templates/sessao/votacao/votacao_bloco.html +++ b/sapl/templates/sessao/votacao/votacao_bloco.html @@ -76,10 +76,12 @@ Ementa: {{ o.materia.ementa|safe }}

- + + {% endif %} {% endfor %} + {% include 'paginacao.html' %}