Browse Source

inicio da nova tela da votacao em bloco - em andamento

pull/2416/head
Cesar Carvalho 7 years ago
parent
commit
6049ad777e
  1. 209
      sapl/sessao/views.py
  2. 44
      sapl/templates/sessao/votacao/votacao_bloco_expediente.html

209
sapl/sessao/views.py

@ -3218,13 +3218,15 @@ class JustificativaAusenciaCrud(MasterDetailCrud):
class VotacaoEmBlocoExpediente(PermissionRequiredForAppCrudMixin, class VotacaoEmBlocoExpediente(PermissionRequiredForAppCrudMixin,
MateriaLegislativaPesquisaView): ListView):
filterset_class = VotacaoEmBlocoFilterSet model = OrdemDia
template_name = 'sessao/votacao/votacao_bloco_expediente.html' template_name = 'sessao/votacao/votacao_bloco_expediente.html'
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)
@ -3310,51 +3312,69 @@ class VotacaoEmBlocoExpediente(PermissionRequiredForAppCrudMixin,
reverse('sapl.sessao:expedientemateria_list', kwargs={'pk': pk})) reverse('sapl.sessao:expedientemateria_list', kwargs={'pk': pk}))
class VotacaoEmBlocoOrdemDia(VotacaoEmBlocoExpediente): class VotacaoEmBlocoOrdemDia(ListView):
filterset_class = VotacaoEmBlocoFilterSet model = OrdemDia
template_name = 'sessao/votacao/votacao_bloco_ordem.html' template_name = 'sessao/votacao/votacao_bloco_ordem.html'
app_label = AppConfig.label app_label = AppConfig.label
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
context_object_name = 'ordemdia'
def get_filterset_kwargs(self, filterset_class): def get_queryset(self):
super(VotacaoEmBlocoExpediente, kwargs = self.kwargs
self).get_filterset_kwargs(filterset_class) return OrdemDia.objects.filter(sessao_plenaria_id=
kwargs['pk'])
kwargs = {'data': self.request.GET or None} def get_context_data(self, **kwargs):
context = super(VotacaoEmBlocoOrdemDia, self).get_context_data(**kwargs)
import ipdb; ipdb.set_trace()
# paginator = context['paginator']
context['page_obj'] = context['object_list']
qs = self.get_queryset() # context['page_range'] = make_pagination(
# page_obj.number, paginator.num_pages)
return context
if 'tramitacao__status' in self.request.GET:
if self.request.GET['tramitacao__status']:
lista_status = filtra_tramitacao_status(
self.request.GET['tramitacao__status'])
lista_materias_adicionadas = retira_materias_ja_adicionadas( # def get_filterset_kwargs(self, filterset_class):
self.kwargs['pk'], OrdemDia) # super(VotacaoEmBlocoExpediente,
# self).get_filterset_kwargs(filterset_class)
qs = qs.filter(id__in=lista_status).exclude( # kwargs = {'data': self.request.GET or None}
id__in=lista_materias_adicionadas).distinct()
kwargs.update({ # qs = self.get_queryset()
'queryset': qs,
})
return kwargs
def post(self, request, *args, **kwargs): # if 'tramitacao__status' in self.request.GET:
marcadas = request.POST.getlist('materia_id') # if self.request.GET['tramitacao__status']:
username = request.user.username # lista_status = filtra_tramitacao_status(
tipo_votacao = request.POST['tipo_votacao_'] # self.request.GET['tramitacao__status'])
qs = self.get_queryset() # lista_materias_adicionadas = retira_materias_ja_adicionadas(
# self.kwargs['pk'], OrdemDia)
qs = qs.filter(id__in=marcadas).distinct() # lista_materias_ordem_dia = OrdemDia.objects.filter(
# sessao_plenaria_id=self.kwargs['pk'])
kwargs.update({ # qs = qs.filter(id__in=lista_status).exclude(
'queryset': qs, # id__in=lista_materias_adicionadas).distinct()
'tipo_votacao': tipo_votacao
}) # kwargs.update({
# 'queryset': qs,
# })
# return kwargs
# def post(self, request, *args, **kwargs):
# marcadas = request.POST.getlist('materia_id')
# username = request.user.username
# tipo_votacao = request.POST['tipo_votacao_']
# qs = self.get_queryset()
# qs = qs.filter(id__in=marcadas).distinct()
import pdb; pdb.set_trace() # kwargs.update({
# 'queryset': qs,
# 'tipo_votacao': tipo_votacao
# })
# for m in marcadas: # for m in marcadas:
# try: # try:
@ -3394,3 +3414,128 @@ class VotacaoEmBlocoOrdemDia(VotacaoEmBlocoExpediente):
return HttpResponseRedirect( return HttpResponseRedirect(
reverse('sapl.sessao:votacaosimbolicabloco', kwargs=self.kwargs)) reverse('sapl.sessao:votacaosimbolicabloco', kwargs=self.kwargs))
class TelaVotacaoEmBlocoView(SessaoPermissionMixin):
"""
Votação Simbólica e Secreta
"""
template_name = 'sessao/votacao/votacao_para_votacaoembloco.html'
form_class = VotacaoForm
logger = logging.getLogger(__name__)
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
url = request.get_full_path()
# TODO: HACK, VERIFICAR MELHOR FORMA DE FAZER ISSO
if "votsimb" in url:
titulo = _("Votação Simbólica")
elif "votsec" in url:
titulo = _("Votação Secreta")
else:
titulo = _("Não definida")
ordem_id = kwargs['oid']
ordem = OrdemDia.objects.get(id=ordem_id)
qtde_presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.object.id).count()
materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa}
context.update({'votacao_titulo': titulo,
'materia': materia,
'total_presentes': qtde_presentes})
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = VotacaoForm(request.POST)
context = self.get_context_data(object=self.object)
url = request.get_full_path()
# ====================================================
if "votsimb" in url:
titulo = _("Votação Simbólica")
elif "votsec" in url:
titulo = _("Votação Secreta")
else:
titulo = _("Não definida")
ordem_id = kwargs['oid']
ordem = OrdemDia.objects.get(id=ordem_id)
qtde_presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.object.id).count()
materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa}
context.update({'votacao_titulo': titulo,
'materia': materia,
'total_presentes': qtde_presentes})
context.update({'form': form})
# ====================================================
if 'cancelar-votacao' in request.POST:
ordem.votacao_aberta = False
ordem.save()
return self.form_valid(form)
if form.is_valid():
materia_id = kwargs['mid']
ordem_id = kwargs['oid']
qtde_presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.object.id).count()
qtde_votos = (int(request.POST['votos_sim']) +
int(request.POST['votos_nao']) +
int(request.POST['abstencoes']))
if (int(request.POST['voto_presidente']) == 0):
qtde_presentes -= 1
if (qtde_votos > qtde_presentes or qtde_votos < qtde_presentes):
form._errors["total_votos"] = ErrorList([u""])
return self.render_to_response(context)
elif (qtde_presentes == qtde_votos):
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.observacao = request.POST['observacao']
votacao.materia_id = materia_id
votacao.ordem_id = ordem_id
votacao.tipo_resultado_votacao_id = int(
request.POST['resultado_votacao'])
votacao.save()
except Exception as e:
username = request.user.username
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))
return self.form_invalid(form)
else:
ordem = OrdemDia.objects.get(
sessao_plenaria_id=self.object.id,
materia_id=materia_id)
resultado = TipoResultadoVotacao.objects.get(
id=request.POST['resultado_votacao'])
ordem.resultado = resultado.nome
ordem.votacao_aberta = False
ordem.save()
return self.form_valid(form)
else:
return self.render_to_response(context)
def get_tipos_votacao(self):
for tipo in TipoResultadoVotacao.objects.all():
yield tipo
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sapl.sessao:ordemdia_list',
kwargs={'pk': pk})

44
sapl/templates/sessao/votacao/votacao_bloco_expediente.html

@ -9,7 +9,7 @@
{% block detail_content %} {% block detail_content %}
{% block buttons %} {% block buttons %}
{% if filter_url and not filter.form.errors %} {% comment %} {% if filter_url and not filter.form.errors %}
<div class="actions btn-group pull-right" role="group"> <div class="actions btn-group pull-right" role="group">
<a href="{% url 'sapl.sessao:votacao_bloco_expediente' pk_sessao %}" class="btn btn-default">{% trans 'Fazer nova pesquisa' %}</a> <a href="{% url 'sapl.sessao:votacao_bloco_expediente' pk_sessao %}" class="btn btn-default">{% trans 'Fazer nova pesquisa' %}</a>
</div> </div>
@ -18,29 +18,20 @@
<a href="{% url 'sapl.sessao:expedientemateria_list' pk_sessao %}" class="btn btn-default">{% trans 'Matérias do Expediente' %}</a> <a href="{% url 'sapl.sessao:expedientemateria_list' pk_sessao %}" class="btn btn-default">{% trans 'Matérias do Expediente' %}</a>
</div> </div>
{% endif %} {% endif %} {% endcomment %}
{% endblock %} {% endblock %}
{% if filter.form.errors %}
{% crispy filter.form %}
{% else %}
{% if not filter_url %}
{% crispy filter.form %}
{% endif %}
{% endif %}
<p></p> <p></p>
{% if filter_url and not filter.form.errors %}
{% if paginator.count %} {% comment %} {% if paginator.count %} {% endcomment %}
<form method="POST" enctype="application/x-www-form-urlencoded"> <form method="POST" enctype="application/x-www-form-urlencoded">
{% csrf_token %} {% csrf_token %}
{% if paginator.count > 1 %} {% comment %} {% if paginator.count > 1 %}
<h3>{% blocktrans with paginator.count as total_materias %}Pesquisa concluída com sucesso! Foram encontradas {{total_materias}} matérias.{% endblocktrans %}</h3> <h3>{% blocktrans with paginator.count as total_materias %}Pesquisa concluída com sucesso! Foram encontradas {{total_materias}} matérias.{% endblocktrans %}</h3>
{% elif paginator.count == 1 %} {% elif paginator.count == 1 %}
<h3>{% trans 'Pesquisa concluída com sucesso! Foi encontrada 1 matéria.'%}</h3> <h3>{% trans 'Pesquisa concluída com sucesso! Foi encontrada 1 matéria.'%}</h3>
{% endif %} {% endif %} {% endcomment %}
<br><br> <br><br>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<thead class="thead-default"> <thead class="thead-default">
@ -54,17 +45,16 @@
</br> </br>
<input type="radio" name="tipo_votacao_{{m.id}}" id="tipo_votacao_{{m.id}}" value="2"> <label for="tipo">Nominal</label> <input type="radio" name="tipo_votacao_{{m.id}}" id="tipo_votacao_{{m.id}}" value="2"> <label for="tipo">Nominal</label>
</br> </br>
<input type="radio" name="tipo_votacao_{{m.id}}" id="tipo_votacao_{{m.id}}" value="3"> <label for="tipo">Secreta</label>
</td> </td>
</tr> </tr>
</table> </table>
<br> <br>
<h3>Selecione a(s) matéria(s) desejada(s).</h3> <h3>Selecione a(s) ordem(s) do dia desejada(s).</h3>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<thead class="thead-default"> <thead class="thead-default">
<tr> <tr>
<td><h3>{% trans "Matérias" %}</h3></td> <td><h3>{% trans "Ordem do dia" %}</h3></td>
</tr> </tr>
</thead> </thead>
@ -72,9 +62,10 @@
<tr> <tr>
<td> <td>
<input type="checkbox" name="materia_id" id="{{m.id}}" value="{{m.id}}" {% if check %} checked {% endif %}> <input type="checkbox" name="materia_id" id="{{m.id}}" value="{{m.id}}" {% if check %} checked {% endif %}>
<strong><a href="{% url 'sapl.materia:materialegislativa_detail' m.id %}">{{m.tipo.sigla}} {{m.numero}}/{{m.ano}} - {{m.tipo}}</strong></a></br> <strong><a href="{% url 'sapl.materia:materialegislativa_detail' m.id %}">{{m.materia.tipo.sigla}} {{m.materia.numero}}/{{m.materia.ano}} - {{m.materia.tipo}}</strong></a></br>
<strong>Autores:</strong> <strong>Processo:</strong> &nbsp;</br>
{% for a in m.autoria_set.all %} <strong>Autor:</strong>
{% for a in m.materia.autoria_set.all %}
{% if not forloop.first %} {% if not forloop.first %}
, &nbsp;&nbsp; {{a.autor|default_if_none:""}} , &nbsp;&nbsp; {{a.autor|default_if_none:""}}
{% else %} {% else %}
@ -82,9 +73,9 @@
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</br> </br>
<strong>Localização Atual:</strong> &nbsp;{{m.tramitacao_set.last.unidade_tramitacao_destino|default_if_none:"Não informado"}}</br> <strong>Status:</strong> &nbsp;</br>
<strong>Status:</strong> &nbsp;{{m.tramitacao_set.last.status|default_if_none:"Não informado"}}</br> <strong>Protocolo:</strong> &nbsp;</br>
<strong>Data da última Tramitação:</strong> &nbsp;{{m.tramitacao_set.last.data_tramitacao|default_if_none:"Não informado"}}</br> <strong>Turno:</strong>&nbsp;</br>
<strong>Ementa:</strong>&nbsp;{{ m.ementa|safe }}</br> <strong>Ementa:</strong>&nbsp;{{ m.ementa|safe }}</br>
<p></p> <p></p>
</td> </td>
@ -93,17 +84,16 @@
</table> </table>
<input type="submit" value="Registrar votação" class="btn btn-primary"S> <input type="submit" value="Registrar votação" class="btn btn-primary"S>
</form> </form>
{% else %} {% comment %} {% else %}
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
<tr> <tr>
<td> <td>
<h3>Nenhuma matéria encontrada com essas especificações</h3> <h3>Nenhuma ordem do dia aberta.</h3>
</td> </td>
</tr> </tr>
</table> </table>
{% endif %} {% endif %} {% endcomment %}
{% endif %}
{% endblock detail_content %} {% endblock detail_content %}

Loading…
Cancel
Save