Browse Source

ajusta menu e lança erro se root_pk ou object estiver faltando no contexto

pull/2416/head
Leandro Roberto 7 years ago
parent
commit
3d1526bf49
  1. 58
      sapl/base/templatetags/menus.py
  2. 266
      sapl/sessao/views.py

58
sapl/base/templatetags/menus.py

@ -1,3 +1,5 @@
import logging
from django import template
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _
@ -6,6 +8,8 @@ import yaml
register = template.Library()
logger = logging.getLogger(__name__)
@register.inclusion_tag('menus/menu.html', takes_context=True)
def menu(context, path=None):
@ -84,7 +88,7 @@ def nav_run(context, path=None):
menu = yaml.load(rendered)
resolve_urls_inplace(menu, root_pk, rm, context)
except Exception as e:
print(_("""Erro na conversão do yaml %s. App: %s.
raise Exception(_("""Erro na conversão do yaml %s. App: %s.
Erro:
%s
""") % (
@ -113,25 +117,61 @@ def resolve_urls_inplace(menu, pk, rm, context):
menu['url'] = ''
menu['active'] = ''
else:
if ':' in url_name:
if '/' in url_name:
pass
elif ':' in url_name:
try:
menu['url'] = reverse('%s' % menu['url'],
kwargs={'pk': pk})
menu['url'] = reverse('%s' % menu['url'])
except:
try:
menu['url'] = reverse('%s' % menu['url'])
menu['url'] = reverse('%s' % menu['url'],
kwargs={'pk': pk})
except:
pass
# tem que ser root_pk pois quando está sendo
# renderizado um detail, update, delete
# e ainda sim é necessário colocar o menu,
# nestes, casos o pk da url é do detail, e não
# do master, porém, os menus do subnav, apontam para
# outras áreas que as urls destas são construídas
# com pk do master, e não do detail... por isso
# no contexto deve ter, ou root_pk, ou object
# sendo que qualquer um dos dois,deverá ser o
# master.
# Estes detalhes são relevantes quando usa-se
# o menu isolado. Por outro lado, quando usado
# conjuntamente com o crud, este configura o contexto
# como se deve para o menus.py
log = """
Erro na construção do Menu:
menu: {}
url: {}
1) Verifique se a url existe
2) Se existe no contexto um desses itens:
- context['root_pk'] pk do master
- context['object'] objeto do master
""".format(menu['title'], menu['url'])
logger.error(log)
raise Exception(log)
else:
try:
menu['url'] = reverse('%s:%s' % (
rm.app_name, menu['url']), kwargs={'pk': pk})
rm.app_name, menu['url']))
except:
try:
menu['url'] = reverse('%s:%s' % (
rm.app_name, menu['url']))
rm.app_name, menu['url']), kwargs={'pk': pk})
except:
pass
log = """Erro na construção do Menu:
menu: {}
url: {}
1) Verifique se a url existe
2) Se existe no contexto um desses itens:
- context['root_pk'] pk do master
- context['object'] objeto do master
""".format(menu['title'], menu['url'])
logger.error(log)
raise Exception(log)
menu['active'] = 'active'\
if context['request'].path == menu['url'] else ''

266
sapl/sessao/views.py

@ -1,6 +1,6 @@
from operator import itemgetter
import logging
from operator import itemgetter
from re import sub
from django.contrib import messages
@ -57,7 +57,8 @@ TipoSessaoCrud = CrudAux.build(TipoSessaoPlenaria, 'tipo_sessao_plenaria')
TipoExpedienteCrud = CrudAux.build(TipoExpediente, 'tipo_expediente')
TipoJustificativaCrud = CrudAux.build(TipoJustificativa, 'tipo_justificativa')
CargoBancadaCrud = CrudAux.build(CargoBancada, '')
TipoResultadoVotacaoCrud = CrudAux.build(TipoResultadoVotacao, 'tipo_resultado_votacao')
TipoResultadoVotacaoCrud = CrudAux.build(
TipoResultadoVotacao, 'tipo_resultado_votacao')
TipoRetiradaPautaCrud = CrudAux.build(TipoRetiradaPauta, 'tipo_retirada_pauta')
@ -87,7 +88,8 @@ def verifica_presenca(request, model, spk):
logger = logging.getLogger(__name__)
if not model.objects.filter(sessao_plenaria_id=spk).exists():
username = request.user.username
logger.error("user=" + username + ". Votação não pode ser aberta sem presenças (sessao_plenaria_id={}).".format(spk))
logger.error("user=" + username +
". Votação não pode ser aberta sem presenças (sessao_plenaria_id={}).".format(spk))
msg = _('Votação não pode ser aberta sem presenças')
messages.add_message(request, messages.ERROR, msg)
return False
@ -798,7 +800,8 @@ class PresencaView(FormMixin, PresencaMixin, DetailView):
sessao.parlamentar = Parlamentar.objects.get(id=p)
sessao.save()
username = request.user.username
self.logger.info("user=" + username + ". SessaoPlenariaPresenca salva com sucesso (parlamentar_id={})!".format(p))
self.logger.info(
"user=" + username + ". SessaoPlenariaPresenca salva com sucesso (parlamentar_id={})!".format(p))
msg = _('Presença em Sessão salva com sucesso!')
messages.add_message(request, messages.SUCCESS, msg)
@ -905,7 +908,8 @@ class PresencaOrdemDiaView(FormMixin, PresencaMixin, DetailView):
ordem.parlamentar = Parlamentar.objects.get(id=p)
ordem.save()
username = request.user.username
self.logger.info('user=' + username + '. PresencaOrdemDia (parlamentar com id={}) salva com sucesso!'.format(p))
self.logger.info(
'user=' + username + '. PresencaOrdemDia (parlamentar com id={}) salva com sucesso!'.format(p))
msg = _('Presença em Ordem do Dia salva com sucesso!')
messages.add_message(request, messages.SUCCESS, msg)
@ -1041,11 +1045,13 @@ class MesaView(FormMixin, DetailView):
username = request.user.username
try:
self.logger.debug("user=" + username + ". Tentando obter SessaoPlenaria com id={}".format(kwargs['pk']))
self.logger.debug(
"user=" + username + ". Tentando obter SessaoPlenaria com id={}".format(kwargs['pk']))
sessao = SessaoPlenaria.objects.get(
id=kwargs['pk'])
except ObjectDoesNotExist:
self.logger.error("user=" + username + ". SessaoPlenaria com id={} não existe.".format(kwargs['pk']))
self.logger.error(
"user=" + username + ". SessaoPlenaria com id={} não existe.".format(kwargs['pk']))
mensagem = _('Esta Sessão Plenária não existe!')
messages.add_message(request, messages.INFO, mensagem)
@ -1100,11 +1106,13 @@ def atualizar_mesa(request):
logger = logging.getLogger(__name__)
username = request.user.username
try:
logger.debug("user=" + username + ". Tentando obter SessaoPlenaria com id={}.".format(request.GET['sessao']))
logger.debug("user=" + username +
". Tentando obter SessaoPlenaria com id={}.".format(request.GET['sessao']))
sessao = SessaoPlenaria.objects.get(
id=int(request.GET['sessao']))
except ObjectDoesNotExist:
logger.error("user=" + username + ". SessaoPlenaria com id={} inexistente.".format(request.GET['sessao']))
logger.error("user=" + username +
". SessaoPlenaria com id={} inexistente.".format(request.GET['sessao']))
return JsonResponse({'msg': ('Sessão Inexistente!', 0)})
# Atualiza os componentes da view após a mudança
@ -1152,19 +1160,23 @@ def insere_parlamentar_composicao(request):
composicao = IntegranteMesa()
try:
logger.debug("user=" + username + ". Tentando obter SessaoPlenaria com id={}.".format(request.POST['sessao']))
logger.debug(
"user=" + username + ". Tentando obter SessaoPlenaria com id={}.".format(request.POST['sessao']))
composicao.sessao_plenaria = SessaoPlenaria.objects.get(
id=int(request.POST['sessao']))
except MultiValueDictKeyError:
logger.error("user=" + username + ". SessaoPlenaria com id={} não existe.".format(request.POST['sessao']))
logger.error(
"user=" + username + ". SessaoPlenaria com id={} não existe.".format(request.POST['sessao']))
return JsonResponse({'msg': ('A Sessão informada não existe!', 0)})
try:
logger.debug("user=" + username + ". Tentando obter Parlamentar com id={}.".format(request.POST['parlamentar']))
logger.debug(
"user=" + username + ". Tentando obter Parlamentar com id={}.".format(request.POST['parlamentar']))
composicao.parlamentar = Parlamentar.objects.get(
id=int(request.POST['parlamentar']))
except MultiValueDictKeyError:
logger.error("user=" + username + ". Parlamentar com id={} não existe.".format(request.POST['parlamentar']))
logger.error(
"user=" + username + ". Parlamentar com id={} não existe.".format(request.POST['parlamentar']))
return JsonResponse({
'msg': ('Nenhum parlamentar foi inserido!', 0)})
@ -1183,10 +1195,12 @@ def insere_parlamentar_composicao(request):
composicao.save()
except MultiValueDictKeyError as e:
logger.error("user=" + username + ". Nenhum cargo foi inserido! " + str(e))
logger.error("user=" + username +
". Nenhum cargo foi inserido! " + str(e))
return JsonResponse({'msg': ('Nenhum cargo foi inserido!', 0)})
logger.info("user=" + username + ". Parlamentar (id={}) inserido com sucesso na sessao_plenaria(id={}) e cargo(ìd={}).")
logger.info("user=" + username +
". Parlamentar (id={}) inserido com sucesso na sessao_plenaria(id={}) e cargo(ìd={}).")
return JsonResponse({'msg': ('Parlamentar inserido com sucesso!', 1)})
else:
@ -1207,7 +1221,8 @@ def remove_parlamentar_composicao(request):
if 'composicao_mesa' in request.POST:
try:
logger.debug("user=" + username + ". Tentando remover IntegranteMesa com id={}".format(request.POST['composicao_mesa']))
logger.debug("user=" + username + ". Tentando remover IntegranteMesa com id={}".format(
request.POST['composicao_mesa']))
IntegranteMesa.objects.get(
id=int(request.POST['composicao_mesa'])).delete()
except ObjectDoesNotExist:
@ -1217,12 +1232,14 @@ def remove_parlamentar_composicao(request):
{'msg': (
'Composição da Mesa não pôde ser removida!', 0)})
logger.info("user=" + username + ". IntegranteMesa com id={} removido com sucesso.")
logger.info("user=" + username +
". IntegranteMesa com id={} removido com sucesso.")
return JsonResponse(
{'msg': (
'Parlamentar excluido com sucesso!', 1)})
else:
logger.debug("user=" + username + ". Nenhum parlamentar selecionado para ser excluido!")
logger.debug("user=" + username +
". Nenhum parlamentar selecionado para ser excluido!")
return JsonResponse(
{'msg': (
'Selecione algum parlamentar para ser excluido!', 0)})
@ -1349,7 +1366,6 @@ class ResumoView(DetailView):
context.update({'presenca_sessao': parlamentares_sessao,
'justificativa_ausencia': ausentes_sessao})
# =====================================================================
# Expedientes
expediente = ExpedienteSessao.objects.filter(
@ -1450,13 +1466,16 @@ class ResumoView(DetailView):
config_assinatura_ata = AppsAppConfig.objects.first().assinatura_ata
if config_assinatura_ata == 'T' and parlamentares_ordem:
context.update({'texto_assinatura': 'Assinatura de Todos os Parlamentares Presentes na Sessão'})
context.update(
{'texto_assinatura': 'Assinatura de Todos os Parlamentares Presentes na Sessão'})
context.update({'assinatura_presentes': parlamentares_ordem})
elif config_assinatura_ata == 'M' and parlamentares_mesa_dia:
context.update({'texto_assinatura': 'Assinatura da Mesa Diretora da Sessão'})
context.update(
{'texto_assinatura': 'Assinatura da Mesa Diretora da Sessão'})
context.update({'assinatura_presentes': parlamentares_mesa_dia})
elif config_assinatura_ata == 'P' and presidente_dia:
context.update({'texto_assinatura': 'Assinatura do Presidente da Sessão'})
context.update(
{'texto_assinatura': 'Assinatura do Presidente da Sessão'})
context.update({'assinatura_presentes': presidente_dia})
# =====================================================================
@ -1609,7 +1628,8 @@ class ExpedienteView(FormMixin, DetailView):
if 'apagar-expediente' in request.POST:
ExpedienteSessao.objects.filter(
sessao_plenaria_id=self.object.id).delete()
self.logger.info('user=' + username + '. ExpedienteSessao de sessao_plenaria_id={} deletado.'.format(self.object.id))
self.logger.info(
'user=' + username + '. ExpedienteSessao de sessao_plenaria_id={} deletado.'.format(self.object.id))
return self.form_valid(form)
if form.is_valid():
@ -1635,7 +1655,8 @@ class ExpedienteView(FormMixin, DetailView):
return self.form_valid(form)
else:
self.logger.error("user=" + username + ". Erro ao salvar registro (sessao_plenaria_id={}).".format(self.object.id))
self.logger.error(
"user=" + username + ". Erro ao salvar registro (sessao_plenaria_id={}).".format(self.object.id))
msg = _('Erro ao salvar ExpedienteSessao')
messages.add_message(self.request, messages.SUCCESS, msg)
return self.form_invalid(form)
@ -1705,7 +1726,8 @@ class OcorrenciaSessaoView(FormMixin, DetailView):
messages.add_message(self.request, messages.SUCCESS, msg)
username = self.request.user.username
self.logger.info('user=' + username + '. OcorrenciaSessao de sessao_plenaria_id={} atualizada com sucesso.'.format(self.object.id))
self.logger.info(
'user=' + username + '. OcorrenciaSessao de sessao_plenaria_id={} atualizada com sucesso.'.format(self.object.id))
@method_decorator(permission_required('sessao.add_ocorrenciasessao'))
def post(self, request, *args, **kwargs):
@ -1954,14 +1976,16 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
if RegistroVotacao.objects.filter(ordem_id=ordem_id).exists():
msg = _('Esta matéria já foi votada!')
messages.add_message(request, messages.ERROR, msg)
self.logger.info('user=' + username + '. Matéria (ordem_id={}) já votada!'.format(ordem_id))
self.logger.info(
'user=' + username + '. Matéria (ordem_id={}) já votada!'.format(ordem_id))
return HttpResponseRedirect(reverse(
'sapl.sessao:ordemdia_list', kwargs={'pk': kwargs['pk']}))
try:
ordem = OrdemDia.objects.get(id=ordem_id)
except ObjectDoesNotExist:
self.logger.error('user=' + username + '. Objeto OrdemDia (pk={}) não existe.'.format(ordem_id))
self.logger.error(
'user=' + username + '. Objeto OrdemDia (pk={}) não existe.'.format(ordem_id))
raise Http404()
presentes = PresencaOrdemDia.objects.filter(
@ -1971,7 +1995,8 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
materia_votacao = ordem
if not ordem.votacao_aberta:
self.logger.error('user=' + username + '. A votação para esta OrdemDia (id={}) encontra-se fechada!'.format(ordem_id))
self.logger.error(
'user=' + username + '. A votação para esta OrdemDia (id={}) encontra-se fechada!'.format(ordem_id))
msg = _('A votação para esta matéria encontra-se fechada!')
messages.add_message(request, messages.ERROR, msg)
return HttpResponseRedirect(reverse(
@ -1984,7 +2009,8 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
expediente_id = kwargs['oid']
if (RegistroVotacao.objects.filter(
expediente_id=expediente_id).exists()):
self.logger.error("user=" + username + ". RegistroVotacao (expediente_id={}) já existe.".format(expediente_id))
self.logger.error(
"user=" + username + ". RegistroVotacao (expediente_id={}) já existe.".format(expediente_id))
msg = _('Esta matéria já foi votada!')
messages.add_message(request, messages.ERROR, msg)
return HttpResponseRedirect(reverse(
@ -1992,10 +2018,12 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
kwargs={'pk': kwargs['pk']}))
try:
self.logger.debug("user=" + username + ". Tentando obter Objeto ExpedienteMateria com id={}.".format(expediente_id))
self.logger.debug(
"user=" + username + ". Tentando obter Objeto ExpedienteMateria com id={}.".format(expediente_id))
expediente = ExpedienteMateria.objects.get(id=expediente_id)
except ObjectDoesNotExist:
self.logger.error('user=' + username + '. Objeto ExpedienteMateria com id={} não existe.'.format(expediente_id))
self.logger.error(
'user=' + username + '. Objeto ExpedienteMateria com id={} não existe.'.format(expediente_id))
raise Http404()
presentes = SessaoPlenariaPresenca.objects.filter(
@ -2005,7 +2033,8 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
materia_votacao = expediente
if not expediente.votacao_aberta:
msg = _('A votação para este ExpedienteMateria (id={}) encontra-se fechada!'.format(expediente_id))
msg = _(
'A votação para este ExpedienteMateria (id={}) encontra-se fechada!'.format(expediente_id))
messages.add_message(request, messages.ERROR, msg)
return HttpResponseRedirect(reverse(
'sapl.sessao:expedientemateria_list',
@ -2033,19 +2062,23 @@ class VotacaoNominalAbstract(SessaoPermissionMixin):
if self.ordem:
ordem_id = kwargs['oid']
try:
self.logger.debug("user=" + username + ". Tentando obter objeto OrdemDia com id={}.".format(ordem_id))
self.logger.debug(
"user=" + username + ". Tentando obter objeto OrdemDia com id={}.".format(ordem_id))
materia_votacao = OrdemDia.objects.get(id=ordem_id)
except ObjectDoesNotExist:
self.logger.error('user=' + username + '. Objeto OrdemDia com id={} não existe.'.format(ordem_id))
self.logger.error(
'user=' + username + '. Objeto OrdemDia com id={} não existe.'.format(ordem_id))
raise Http404()
elif self.expediente:
expediente_id = kwargs['oid']
try:
self.logger.debug("user=" + username + ". Tentando obter ExpedienteMateria com id={}.".format(expediente_id))
self.logger.debug(
"user=" + username + ". Tentando obter ExpedienteMateria com id={}.".format(expediente_id))
materia_votacao = ExpedienteMateria.objects.get(
id=expediente_id)
except ObjectDoesNotExist:
self.logger.error('user=' + username + '. Objeto ExpedienteMateria com id={} não existe.'.format(expediente_id))
self.logger.error(
'user=' + username + '. Objeto ExpedienteMateria com id={} não existe.'.format(expediente_id))
raise Http404()
if form.is_valid():
@ -2231,7 +2264,8 @@ class VotacaoNominalEditAbstract(SessaoPermissionMixin):
votacao = RegistroVotacao.objects.filter(ordem_id=ordem_id).last()
if not ordem or not votacao:
self.logger.error('user=' + username + '. Objeto OrdemDia com id={} ou RegistroVotacao de OrdemDia não existe.'.format(ordem_id))
self.logger.error(
'user=' + username + '. Objeto OrdemDia com id={} ou RegistroVotacao de OrdemDia não existe.'.format(ordem_id))
raise Http404()
materia = ordem.materia
@ -2304,7 +2338,8 @@ class VotacaoNominalEditAbstract(SessaoPermissionMixin):
try:
materia_votacao = OrdemDia.objects.get(id=ordem_id)
except ObjectDoesNotExist:
self.logger.error('user=' + username + '. Objeto OrdemDia com id={} não existe.'.format(ordem_id))
self.logger.error(
'user=' + username + '. Objeto OrdemDia com id={} não existe.'.format(ordem_id))
raise Http404()
elif self.expediente:
@ -2314,7 +2349,8 @@ class VotacaoNominalEditAbstract(SessaoPermissionMixin):
materia_votacao = ExpedienteMateria.objects.get(
id=expediente_id)
except ObjectDoesNotExist:
self.logger.error('user=' + username + '. Objeto ExpedienteMateria com id={} não existe.'.format(expediente_id))
self.logger.error(
'user=' + username + '. Objeto ExpedienteMateria com id={} não existe.'.format(expediente_id))
raise Http404()
if(int(request.POST['anular_votacao']) == 1):
@ -2991,7 +3027,8 @@ class AdicionarVariasMateriasExpediente(PermissionRequiredForAppCrudMixin,
msg = _('%s adicionado(a) com sucesso!'
% MateriaLegislativa.objects.get(id=m))
messages.add_message(request, messages.SUCCESS, msg)
self.logger.info("user=" + username + ". MateriaLegislativa de id={} adicionado(a) com sucesso!".format(m))
self.logger.info(
"user=" + username + ". MateriaLegislativa de id={} adicionado(a) com sucesso!".format(m))
except MultiValueDictKeyError:
msg = _('Formulário Inválido. Você esqueceu de selecionar ' +
'%s' %
@ -3066,7 +3103,8 @@ class AdicionarVariasMateriasOrdemDia(AdicionarVariasMateriasExpediente):
msg = _('%s adicionado(a) com sucesso!'
% MateriaLegislativa.objects.get(id=m))
messages.add_message(request, messages.SUCCESS, msg)
self.logger.debug('user=' + username + '. MateriaLegislativa de id={} adicionado(a) com sucesso!'.format(m))
self.logger.debug(
'user=' + username + '. MateriaLegislativa de id={} adicionado(a) com sucesso!'.format(m))
except MultiValueDictKeyError:
msg = _('Formulário Inválido. Você esqueceu de selecionar ' +
'o tipo de votação de %s' %
@ -3127,7 +3165,8 @@ def mudar_ordem_materia_sessao(request):
numero_ordem=posicao_inicial)
except ObjectDoesNotExist:
username = request.user.username
logger.error("user=" + username + ". Materia com sessao_plenaria={} e numero_ordem={}.".format(pk_sessao, posicao_inicial))
logger.error("user=" + username +
". Materia com sessao_plenaria={} e numero_ordem={}.".format(pk_sessao, posicao_inicial))
raise # TODO tratar essa exceção
# Se a posição inicial for menor que a final, todos que
@ -3247,15 +3286,14 @@ class VotacaoEmBlocoExpediente(ListView):
context_object_name = 'expedientes'
logger = logging.getLogger(__name__)
def get_queryset(self):
kwargs = self.kwargs
return ExpedienteMateria.objects.filter(sessao_plenaria_id=kwargs['pk'],
resultado='')
def get_context_data(self, **kwargs):
context = super(VotacaoEmBlocoExpediente, self).get_context_data(**kwargs)
context = super(VotacaoEmBlocoExpediente,
self).get_context_data(**kwargs)
context['turno_choices'] = Tramitacao.TURNO_CHOICES
context['title'] = SessaoPlenaria.objects.get(id=self.kwargs['pk'])
context['pk'] = self.kwargs['pk']
@ -3271,18 +3309,17 @@ class VotacaoEmBlocoOrdemDia(ListView):
context_object_name = 'ordem_dia'
parent_field = 'sessao_plenaria'
def get_queryset(self):
return OrdemDia.objects.filter(sessao_plenaria_id=self.kwargs['pk'],
resultado='')
def get_context_data(self, **kwargs):
context = super(VotacaoEmBlocoOrdemDia, self).get_context_data(**kwargs)
context = super(VotacaoEmBlocoOrdemDia,
self).get_context_data(**kwargs)
context['turno_choices'] = Tramitacao.TURNO_CHOICES
context['pk'] = self.kwargs['pk']
context['root_pk'] = self.kwargs['pk']
context['title'] = SessaoPlenaria.objects.get(id=self.kwargs['pk'])
context.update({'subnav_template_name': 'sessao/subnav.yaml'})
return context
@ -3295,31 +3332,34 @@ class VotacaoEmBlocoSimbolicaView(TemplateView):
template_name = 'sessao/votacao/votacao_simbolica_bloco.html'
logger = logging.getLogger(__name__)
def post(self, request, *args, **kwargs):
if not 'context' in locals():
context = {'pk': self.kwargs['pk'],
'title': SessaoPlenaria.objects.get(id=self.kwargs['pk']),
'subnav_template_name': 'sessao/subnav.yaml'}
'root_pk': self.kwargs['pk'],
'title': SessaoPlenaria.objects.get(id=self.kwargs['pk'])
}
if 'marcadas_1' in request.POST:
context.update({'resultado_votacao': TipoResultadoVotacao.objects.all(),
'origem': request.POST['origem']})
# marcadas_1 se refere a votação simbólica e marcadas_2 a votação nominal
# marcadas_1 se refere a votação simbólica e marcadas_2 a votação
# nominal
if request.POST['origem'] == 'ordem':
ordens = OrdemDia.objects.filter(id__in=request.POST.getlist('marcadas_1'))
ordens = OrdemDia.objects.filter(
id__in=request.POST.getlist('marcadas_1'))
qtde_presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.kwargs['pk']).count()
context.update({'ordens':ordens,
context.update({'ordens': ordens,
'total_presentes': qtde_presentes})
else:
expedientes = ExpedienteMateria.objects.filter(id__in=request.POST.getlist('marcadas_1'))
expedientes = ExpedienteMateria.objects.filter(
id__in=request.POST.getlist('marcadas_1'))
qtde_presentes = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=self.kwargs['pk']).count()
context.update({'expedientes':expedientes,
context.update({'expedientes': expedientes,
'total_presentes': qtde_presentes})
if 'salvar-votacao' in request.POST:
@ -3330,14 +3370,18 @@ class VotacaoEmBlocoSimbolicaView(TemplateView):
origem = request.POST['origem']
if origem == 'ordem':
ordens = OrdemDia.objects.filter(id__in=request.POST.getlist('ordens'))
ordens = OrdemDia.objects.filter(
id__in=request.POST.getlist('ordens'))
for ordem in ordens:
try:
votacao = RegistroVotacao()
votacao.numero_votos_sim = int(request.POST['votos_sim'])
votacao.numero_votos_nao = int(request.POST['votos_nao'])
votacao.numero_abstencoes = int(request.POST['abstencoes'])
votacao.numero_votos_sim = int(
request.POST['votos_sim'])
votacao.numero_votos_nao = int(
request.POST['votos_nao'])
votacao.numero_abstencoes = int(
request.POST['abstencoes'])
votacao.observacao = request.POST['observacao']
votacao.materia = ordem.materia
votacao.ordem = ordem
@ -3358,13 +3402,17 @@ class VotacaoEmBlocoSimbolicaView(TemplateView):
ordem.save()
else:
expedientes = ExpedienteMateria.objects.filter(id__in=request.POST.getlist('expedientes'))
expedientes = ExpedienteMateria.objects.filter(
id__in=request.POST.getlist('expedientes'))
for expediente in expedientes:
try:
votacao = RegistroVotacao()
votacao.numero_votos_sim = int(request.POST['votos_sim'])
votacao.numero_votos_nao = int(request.POST['votos_nao'])
votacao.numero_abstencoes = int(request.POST['abstencoes'])
votacao.numero_votos_sim = int(
request.POST['votos_sim'])
votacao.numero_votos_nao = int(
request.POST['votos_nao'])
votacao.numero_abstencoes = int(
request.POST['abstencoes'])
votacao.observacao = request.POST['observacao']
votacao.materia = expediente.materia
votacao.expediente = expediente
@ -3389,12 +3437,14 @@ class VotacaoEmBlocoSimbolicaView(TemplateView):
if 'cancelar-votacao' in request.POST:
if request.POST['origem'] == 'ordem':
ordens = OrdemDia.objects.filter(id__in=request.POST.getlist('ordens'))
ordens = OrdemDia.objects.filter(
id__in=request.POST.getlist('ordens'))
for ordem in ordens:
ordem.votacao_aberta = False
ordem.save()
else:
expedientes = ExpedienteMateria.objects.filter(id__in=request.POST.getlist('expedientes'))
expedientes = ExpedienteMateria.objects.filter(
id__in=request.POST.getlist('expedientes'))
for expediente in expedientes:
expediente.votacao_aberta = False
expediente.save()
@ -3403,21 +3453,18 @@ class VotacaoEmBlocoSimbolicaView(TemplateView):
return self.render_to_response(context)
def get_tipos_votacao(self):
for tipo in TipoResultadoVotacao.objects.all():
yield tipo
def get_success_url(self):
if self.request.POST['origem']=='ordem':
if self.request.POST['origem'] == 'ordem':
return reverse('sapl.sessao:ordemdia_list',
kwargs={'pk': self.kwargs['pk']})
else:
return reverse('sapl.sessao:expedientemateria_list',
kwargs={'pk': self.kwargs['pk']})
def form_invalid(self, form, context):
errors_tuple = [(form[e].label, form.errors[e])
@ -3432,13 +3479,15 @@ class VotacaoEmBlocoSimbolicaView(TemplateView):
messages.add_message(self.request, messages.ERROR, error_message)
if self.request.POST['origem'] == 'ordem':
ordens = OrdemDia.objects.filter(id__in=self.request.POST.getlist('ordens'))
ordens = OrdemDia.objects.filter(
id__in=self.request.POST.getlist('ordens'))
qtde_presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.kwargs['pk']).count()
context.update({'ordens': ordens,
'total_presentes': qtde_presentes})
elif self.request.POST['origem'] == 'expediente':
expedientes = ExpedienteMateria.objects.filter(id__in=self.request.POST.getlist('expedientes'))
expedientes = ExpedienteMateria.objects.filter(
id__in=self.request.POST.getlist('expedientes'))
qtde_presentes = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=self.kwargs['pk']).count()
context.update({'expedientes': expedientes,
@ -3464,6 +3513,7 @@ class VotacaoEmBlocoNominalView(TemplateView):
if not 'context' in locals():
context = {'pk': self.kwargs['pk'],
'root_pk': self.kwargs['pk'],
'title': SessaoPlenaria.objects.get(id=self.kwargs['pk']),
'subnav_template_name': 'sessao/subnav.yaml'}
@ -3472,20 +3522,23 @@ class VotacaoEmBlocoNominalView(TemplateView):
context.update({'resultado_votacao': TipoResultadoVotacao.objects.all(),
'origem': request.POST['origem']})
# marcadas_1 se refere a votação simbólica e marcadas_2 a votação nominal
# marcadas_1 se refere a votação simbólica e marcadas_2 a votação
# nominal
if request.POST['origem'] == 'ordem':
ordens = OrdemDia.objects.filter(id__in=request.POST.getlist('marcadas_2'))
ordens = OrdemDia.objects.filter(
id__in=request.POST.getlist('marcadas_2'))
presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=kwargs['pk'])
context.update({'ordens':ordens})
context.update({'ordens': ordens})
else:
expedientes = ExpedienteMateria.objects.filter(id__in=request.POST.getlist('marcadas_2'))
expedientes = ExpedienteMateria.objects.filter(
id__in=request.POST.getlist('marcadas_2'))
presentes = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=kwargs['pk'])
context.update({'expedientes':expedientes})
context.update({'expedientes': expedientes})
total_presentes = presentes.count()
context.update({'parlamentares':self.get_parlamentares(),
'total_presentes':total_presentes})
context.update({'parlamentares': self.get_parlamentares(),
'total_presentes': total_presentes})
if 'cancelar-votacao' in request.POST:
if request.POST['origem'] == 'ordem':
@ -3496,7 +3549,8 @@ class VotacaoEmBlocoNominalView(TemplateView):
'sapl.sessao:ordemdia_list', kwargs={'pk': self.kwargs['pk']}))
else:
for expediente_id in request.POST.getlist('expedientes'):
expediente = ExpedienteMateria.objects.get(id=expediente_id)
expediente = ExpedienteMateria.objects.get(
id=expediente_id)
fechar_votacao_materia(expediente)
return HttpResponseRedirect(reverse(
'sapl.sessao:expedientemateria_list',
@ -3527,11 +3581,15 @@ class VotacaoEmBlocoNominalView(TemplateView):
for ordem_id in request.POST.getlist('ordens'):
ordem = OrdemDia.objects.get(id=ordem_id)
# Remove todas as votação desta matéria, caso existam
RegistroVotacao.objects.filter(ordem_id=ordem_id).delete()
RegistroVotacao.objects.filter(
ordem_id=ordem_id).delete()
votacao = RegistroVotacao()
votacao.numero_votos_sim = int(request.POST['votos_sim'])
votacao.numero_votos_nao = int(request.POST['votos_nao'])
votacao.numero_abstencoes = int(request.POST['abstencoes'])
votacao.numero_votos_sim = int(
request.POST['votos_sim'])
votacao.numero_votos_nao = int(
request.POST['votos_nao'])
votacao.numero_abstencoes = int(
request.POST['abstencoes'])
votacao.observacao = request.POST['observacao']
votacao.materia = ordem.materia
votacao.ordem = ordem
@ -3562,13 +3620,17 @@ class VotacaoEmBlocoNominalView(TemplateView):
else:
for expediente_id in request.POST.getlist('expedientes'):
expediente = ExpedienteMateria.objects.get(id=expediente_id)
expediente = ExpedienteMateria.objects.get(
id=expediente_id)
RegistroVotacao.objects.filter(
expediente_id=expediente_id).delete()
votacao = RegistroVotacao()
votacao.numero_votos_sim = int(request.POST['votos_sim'])
votacao.numero_votos_nao = int(request.POST['votos_nao'])
votacao.numero_abstencoes = int(request.POST['abstencoes'])
votacao.numero_votos_sim = int(
request.POST['votos_sim'])
votacao.numero_votos_nao = int(
request.POST['votos_nao'])
votacao.numero_abstencoes = int(
request.POST['abstencoes'])
votacao.observacao = request.POST['observacao']
votacao.materia = expediente.materia
votacao.expediente = expediente
@ -3605,10 +3667,9 @@ class VotacaoEmBlocoNominalView(TemplateView):
return self.render_to_response(context)
def get_parlamentares(self):
#campos hidden ainda não preenchidos
# campos hidden ainda não preenchidos
if 'marcadas_2' in self.request.POST:
if self.request.POST['origem'] == 'ordem':
presencas = PresencaOrdemDia.objects.filter(
@ -3623,7 +3684,7 @@ class VotacaoEmBlocoNominalView(TemplateView):
voto_parlamentar = VotoParlamentar.objects.filter(
expediente=expedientes_id[0])
#campos hidden já preenchidos
# campos hidden já preenchidos
else:
if self.request.POST['origem'] == 'ordem':
presencas = PresencaOrdemDia.objects.filter(
@ -3653,16 +3714,14 @@ class VotacaoEmBlocoNominalView(TemplateView):
else:
yield [parlamentar, voto.voto]
def get_success_url(self):
if self.request.POST['origem']=='ordem':
if self.request.POST['origem'] == 'ordem':
return reverse('sapl.sessao:ordemdia_list',
kwargs={'pk': self.kwargs['pk']})
else:
return reverse('sapl.sessao:expedientemateria_list',
kwargs={'pk': self.kwargs['pk']})
def form_invalid(self, form, context):
errors_tuple = [(form[e].label, form.errors[e])
@ -3677,32 +3736,36 @@ class VotacaoEmBlocoNominalView(TemplateView):
messages.add_message(self.request, messages.ERROR, error_message)
if self.request.POST['origem'] == 'ordem':
ordens = OrdemDia.objects.filter(id__in=self.request.POST.getlist('ordens'))
ordens = OrdemDia.objects.filter(
id__in=self.request.POST.getlist('ordens'))
presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.kwargs['pk'])
context.update({'ordens': ordens})
elif self.request.POST['origem'] == 'expediente':
expedientes = ExpedienteMateria.objects.filter(id__in=self.request.POST.getlist('expedientes'))
expedientes = ExpedienteMateria.objects.filter(
id__in=self.request.POST.getlist('expedientes'))
presentes = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=self.kwargs['pk'])
context.update({'expedientes': expedientes})
total_presentes = presentes.count()
context.update({'parlamentares':self.get_parlamentares(),
'total_presentes':total_presentes,
context.update({'parlamentares': self.get_parlamentares(),
'total_presentes': total_presentes,
'resultado_votacao': TipoResultadoVotacao.objects.all(),
'form': form,
'origem': self.request.POST['origem']})
return self.render_to_response(context)
class RetiradaPautaCrud(MasterDetailCrud):
model = RetiradaPauta
public = [RP_LIST, RP_DETAIL, ]
parent_field = 'sessao_plenaria'
class BaseMixin(MasterDetailCrud.BaseMixin):
list_field_names = ['tipo_de_retirada', 'materia', 'observacao', 'parlamentar']
list_field_names = ['tipo_de_retirada',
'materia', 'observacao', 'parlamentar']
class ListView(MasterDetailCrud.ListView):
paginate_by = 10
@ -3724,7 +3787,8 @@ class RetiradaPautaCrud(MasterDetailCrud):
layout_key = None
def get_initial(self):
sessao_plenaria = RetiradaPauta.objects.get(id=self.kwargs['pk']).sessao_plenaria
sessao_plenaria = RetiradaPauta.objects.get(
id=self.kwargs['pk']).sessao_plenaria
return {'sessao_plenaria': sessao_plenaria}
class DeleteView(MasterDetailCrud.DeleteView):

Loading…
Cancel
Save