Browse Source

Tela de votacao em bloco simbolica. Em progresso.

pull/2416/head
AndreSouto 7 years ago
parent
commit
004de587a2
  1. 7
      sapl/sessao/urls.py
  2. 297
      sapl/sessao/views.py
  3. 1
      sapl/templates/sessao/votacao/votacao_votacaoembloco.html

7
sapl/sessao/urls.py

@ -28,7 +28,8 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente,
reordernar_materias_expediente, reordernar_materias_expediente,
reordernar_materias_ordem, reordernar_materias_ordem,
sessao_legislativa_legislatura_ajax, sessao_legislativa_legislatura_ajax,
VotacaoEmBlocoOrdemDia, VotacaoEmBlocoExpediente) VotacaoEmBlocoOrdemDia, VotacaoEmBlocoExpediente,
VotacaoEmBlocoView,)
from .apps import AppConfig from .apps import AppConfig
@ -116,6 +117,10 @@ urlpatterns = [
url(r'^sessao/(?P<pk>\d+)/votacao_bloco_ordem_dia$', url(r'^sessao/(?P<pk>\d+)/votacao_bloco_ordem_dia$',
VotacaoEmBlocoOrdemDia.as_view(), VotacaoEmBlocoOrdemDia.as_view(),
name='votacao_bloco_ordemdia'), name='votacao_bloco_ordemdia'),
# url(r'^sessao/(?P<pk>\d+)/votacao_bloco_ordem_dia/votnom$',
# VotacaoNominalView.as_view(), name='votacaobloconomod'),
url(r'^sessao/(?P<pk>\d+)/votacao_bloco_ordem_dia/votsimb$',
VotacaoEmBlocoView.as_view(), name='votacaoblocosimbod'),
url(r'^sessao/(?P<pk>\d+)/votacao_bloco_expediente$', url(r'^sessao/(?P<pk>\d+)/votacao_bloco_expediente$',
VotacaoEmBlocoExpediente.as_view(), VotacaoEmBlocoExpediente.as_view(),
name='votacao_bloco_expediente'), name='votacao_bloco_expediente'),

297
sapl/sessao/views.py

@ -3225,8 +3225,6 @@ class VotacaoEmBlocoExpediente(PermissionRequiredForAppCrudMixin,
app_label = AppConfig.label app_label = AppConfig.label
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
import ipdb; ipdb.set_trace()
def get_filterset_kwargs(self, filterset_class): def get_filterset_kwargs(self, filterset_class):
super(VotacaoEmBlocoExpediente, super(VotacaoEmBlocoExpediente,
self).get_filterset_kwargs(filterset_class) self).get_filterset_kwargs(filterset_class)
@ -3326,103 +3324,71 @@ class VotacaoEmBlocoOrdemDia(ListView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(VotacaoEmBlocoOrdemDia, self).get_context_data(**kwargs) context = super(VotacaoEmBlocoOrdemDia, self).get_context_data(**kwargs)
import ipdb; ipdb.set_trace()
# paginator = context['paginator']
context['page_obj'] = context['object_list'] context['page_obj'] = context['object_list']
# context['page_range'] = make_pagination(
# page_obj.number, paginator.num_pages)
return context return context
def post(self, request, *args, **kwargs):
marcadas = request.POST.getlist('materia_id')
username = request.user.username
# def get_filterset_kwargs(self, filterset_class): if not 'tipo_votacao_' in request.POST:
# super(VotacaoEmBlocoExpediente, msg = _('Formulário Inválido. Você esqueceu de selecionar ' +
# self).get_filterset_kwargs(filterset_class) 'o tipo de votação.')
messages.add_message(request, messages.ERROR, msg)
self.logger.error('user=' + username + '. Formulário Inválido. Você esqueceu de selecionar '
'o tipo de votação.')
# kwargs = {'data': self.request.GET or None} return self.get(request, self.kwargs)
# qs = self.get_queryset() tipo_votacao = request.POST['tipo_votacao_']
# if 'tramitacao__status' in self.request.GET: qs = self.get_queryset()
# if self.request.GET['tramitacao__status']:
# lista_status = filtra_tramitacao_status(
# self.request.GET['tramitacao__status'])
# lista_materias_adicionadas = retira_materias_ja_adicionadas( qs = qs.filter(id__in=marcadas).distinct()
# self.kwargs['pk'], OrdemDia)
# lista_materias_ordem_dia = OrdemDia.objects.filter( kwargs.update({
# sessao_plenaria_id=self.kwargs['pk']) 'queryset': qs,
'tipo_votacao': tipo_votacao,
})
# qs = qs.filter(id__in=lista_status).exclude( import ipdb; ipdb.set_trace()
# id__in=lista_materias_adicionadas).distinct() for m in marcadas:
tipo_votacao = request.POST['tipo_votacao_']
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))
# kwargs.update({ if tipo_votacao:
# 'queryset': qs, lista_materias_ordem_dia = OrdemDia.objects.filter(
# }) sessao_plenaria_id=self.kwargs[
# return kwargs 'pk'])
# def post(self, request, *args, **kwargs): materia = MateriaLegislativa.objects.get(id=m)
# marcadas = request.POST.getlist('materia_id')
# username = request.user.username ordem_dia = OrdemDia()
# tipo_votacao = request.POST['tipo_votacao_'] ordem_dia.sessao_plenaria_id = self.kwargs['pk']
ordem_dia.materia_id = materia.id
# qs = self.get_queryset() if lista_materias_ordem_dia:
posicao = lista_materias_ordem_dia.last().numero_ordem + 1
# qs = qs.filter(id__in=marcadas).distinct() ordem_dia.numero_ordem = posicao
else:
# kwargs.update({ ordem_dia.numero_ordem = 1
# 'queryset': qs, ordem_dia.data_ordem = timezone.now()
# 'tipo_votacao': tipo_votacao ordem_dia.tipo_votacao = tipo_votacao
# }) ordem_dia.save()
# for m in marcadas:
# try:
# tipo_votacao = request.POST['tipo_votacao_%s' % m]
# 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))
# except MultiValueDictKeyError:
# msg = _('Formulário Inválido. Você esqueceu de selecionar ' +
# 'o tipo de votação de %s' %
# MateriaLegislativa.objects.get(id=m))
# messages.add_message(request, messages.ERROR, msg)
# self.logger.error('user=' + username + '. Formulário Inválido. Você esqueceu de selecionar '
# 'o tipo de votação de MateriaLegislativa com id={}'.format(m))
# return self.get(request, self.kwargs)
# if tipo_votacao:
# lista_materias_ordem_dia = OrdemDia.objects.filter(
# sessao_plenaria_id=self.kwargs[
# 'pk'])
# materia = MateriaLegislativa.objects.get(id=m)
# ordem_dia = OrdemDia()
# ordem_dia.sessao_plenaria_id = self.kwargs['pk']
# ordem_dia.materia_id = materia.id
# if lista_materias_ordem_dia:
# posicao = lista_materias_ordem_dia.last().numero_ordem + 1
# ordem_dia.numero_ordem = posicao
# else:
# ordem_dia.numero_ordem = 1
# ordem_dia.data_ordem = timezone.now()
# ordem_dia.tipo_votacao = tipo_votacao
# ordem_dia.save()
return HttpResponseRedirect( return HttpResponseRedirect(
reverse('sapl.sessao:votacaosimbolicabloco', kwargs=self.kwargs)) reverse('sapl.sessao:votacaoblocosimbod', kwargs=self.kwargs))
class TelaVotacaoEmBlocoView(SessaoPermissionMixin): class VotacaoEmBlocoView(SessaoPermissionMixin):
""" """
Votação Simbólica e Secreta Votação Simbólica e Nominal
""" """
template_name = 'sessao/votacao/votacao_para_votacaoembloco.html' template_name = 'sessao/votacao/votacao_votacaoembloco.html'
form_class = VotacaoForm form_class = VotacaoForm
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -3440,6 +3406,7 @@ class TelaVotacaoEmBlocoView(SessaoPermissionMixin):
else: else:
titulo = _("Não definida") titulo = _("Não definida")
import ipdb; ipdb.set_trace()
ordem_id = kwargs['oid'] ordem_id = kwargs['oid']
ordem = OrdemDia.objects.get(id=ordem_id) ordem = OrdemDia.objects.get(id=ordem_id)
qtde_presentes = PresencaOrdemDia.objects.filter( qtde_presentes = PresencaOrdemDia.objects.filter(
@ -3452,90 +3419,90 @@ class TelaVotacaoEmBlocoView(SessaoPermissionMixin):
return self.render_to_response(context) return self.render_to_response(context)
def post(self, request, *args, **kwargs): # def post(self, request, *args, **kwargs):
self.object = self.get_object() # self.object = self.get_object()
form = VotacaoForm(request.POST) # form = VotacaoForm(request.POST)
context = self.get_context_data(object=self.object) # context = self.get_context_data(object=self.object)
url = request.get_full_path() # url = request.get_full_path()
# ==================================================== # # ====================================================
if "votsimb" in url: # if "votsimb" in url:
titulo = _("Votação Simbólica") # titulo = _("Votação Simbólica")
elif "votsec" in url: # elif "votsec" in url:
titulo = _("Votação Secreta") # titulo = _("Votação Secreta")
else: # else:
titulo = _("Não definida") # titulo = _("Não definida")
ordem_id = kwargs['oid'] # ordem_id = kwargs['oid']
ordem = OrdemDia.objects.get(id=ordem_id) # ordem = OrdemDia.objects.get(id=ordem_id)
qtde_presentes = PresencaOrdemDia.objects.filter( # qtde_presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.object.id).count() # sessao_plenaria_id=self.object.id).count()
materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa} # materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa}
context.update({'votacao_titulo': titulo, # context.update({'votacao_titulo': titulo,
'materia': materia, # 'materia': materia,
'total_presentes': qtde_presentes}) # 'total_presentes': qtde_presentes})
context.update({'form': form}) # context.update({'form': form})
# ==================================================== # # ====================================================
if 'cancelar-votacao' in request.POST: # if 'cancelar-votacao' in request.POST:
ordem.votacao_aberta = False # ordem.votacao_aberta = False
ordem.save() # ordem.save()
return self.form_valid(form) # return self.form_valid(form)
if form.is_valid(): # if form.is_valid():
materia_id = kwargs['mid'] # materia_id = kwargs['mid']
ordem_id = kwargs['oid'] # ordem_id = kwargs['oid']
qtde_presentes = PresencaOrdemDia.objects.filter( # qtde_presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.object.id).count() # sessao_plenaria_id=self.object.id).count()
qtde_votos = (int(request.POST['votos_sim']) + # qtde_votos = (int(request.POST['votos_sim']) +
int(request.POST['votos_nao']) + # int(request.POST['votos_nao']) +
int(request.POST['abstencoes'])) # int(request.POST['abstencoes']))
if (int(request.POST['voto_presidente']) == 0): # if (int(request.POST['voto_presidente']) == 0):
qtde_presentes -= 1 # qtde_presentes -= 1
if (qtde_votos > qtde_presentes or qtde_votos < qtde_presentes): # if (qtde_votos > qtde_presentes or qtde_votos < qtde_presentes):
form._errors["total_votos"] = ErrorList([u""]) # form._errors["total_votos"] = ErrorList([u""])
return self.render_to_response(context) # return self.render_to_response(context)
elif (qtde_presentes == qtde_votos): # elif (qtde_presentes == qtde_votos):
try: # try:
votacao = RegistroVotacao() # votacao = RegistroVotacao()
votacao.numero_votos_sim = int(request.POST['votos_sim']) # votacao.numero_votos_sim = int(request.POST['votos_sim'])
votacao.numero_votos_nao = int(request.POST['votos_nao']) # votacao.numero_votos_nao = int(request.POST['votos_nao'])
votacao.numero_abstencoes = int(request.POST['abstencoes']) # votacao.numero_abstencoes = int(request.POST['abstencoes'])
votacao.observacao = request.POST['observacao'] # votacao.observacao = request.POST['observacao']
votacao.materia_id = materia_id # votacao.materia_id = materia_id
votacao.ordem_id = ordem_id # votacao.ordem_id = ordem_id
votacao.tipo_resultado_votacao_id = int( # votacao.tipo_resultado_votacao_id = int(
request.POST['resultado_votacao']) # request.POST['resultado_votacao'])
votacao.save() # votacao.save()
except Exception as e: # except Exception as e:
username = request.user.username # username = request.user.username
self.logger.error('user=' + username + '. Problemas ao salvar RegistroVotacao da materia de id={} ' # self.logger.error('user=' + username + '. Problemas ao salvar RegistroVotacao da materia de id={} '
'e da ordem de id={}. '.format(materia_id, ordem_id) + str(e)) # 'e da ordem de id={}. '.format(materia_id, ordem_id) + str(e))
return self.form_invalid(form) # return self.form_invalid(form)
else: # else:
ordem = OrdemDia.objects.get( # ordem = OrdemDia.objects.get(
sessao_plenaria_id=self.object.id, # sessao_plenaria_id=self.object.id,
materia_id=materia_id) # materia_id=materia_id)
resultado = TipoResultadoVotacao.objects.get( # resultado = TipoResultadoVotacao.objects.get(
id=request.POST['resultado_votacao']) # id=request.POST['resultado_votacao'])
ordem.resultado = resultado.nome # ordem.resultado = resultado.nome
ordem.votacao_aberta = False # ordem.votacao_aberta = False
ordem.save() # ordem.save()
return self.form_valid(form) # return self.form_valid(form)
else: # else:
return self.render_to_response(context) # return self.render_to_response(context)
def get_tipos_votacao(self): # def get_tipos_votacao(self):
for tipo in TipoResultadoVotacao.objects.all(): # for tipo in TipoResultadoVotacao.objects.all():
yield tipo # yield tipo
def get_success_url(self): # def get_success_url(self):
pk = self.kwargs['pk'] # pk = self.kwargs['pk']
return reverse('sapl.sessao:ordemdia_list', # return reverse('sapl.sessao:ordemdia_list',
kwargs={'pk': pk}) # kwargs={'pk': pk})

1
sapl/templates/sessao/votacao/votacao_para_votacaoembloco.html → sapl/templates/sessao/votacao/votacao_votacaoembloco.html

@ -25,7 +25,6 @@
</div> </div>
{% endif %} {% endif %}
<div> <div>
<b>Matéria:</b> {{materia.materia|safe}} <b>Matéria:</b> {{materia.materia|safe}}
<br /> <br />
Loading…
Cancel
Save