From 533353b6be3745914df9f9a18dfddfe0e6d3c8b2 Mon Sep 17 00:00:00 2001 From: Cesar Augusto de Carvalho Date: Mon, 15 Apr 2019 16:46:22 -0300 Subject: [PATCH] Adiciona IP e User em votacao (#2727) --- .../migrations/0037_auto_20190415_1324.py | 33 +++++++++++++++++++ sapl/sessao/models.py | 13 ++++++++ sapl/sessao/views.py | 24 ++++++++++++-- 3 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 sapl/sessao/migrations/0037_auto_20190415_1324.py diff --git a/sapl/sessao/migrations/0037_auto_20190415_1324.py b/sapl/sessao/migrations/0037_auto_20190415_1324.py new file mode 100644 index 000000000..ed1137e4b --- /dev/null +++ b/sapl/sessao/migrations/0037_auto_20190415_1324.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-04-15 16:24 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('sessao', '0036_auto_20190412_1106'), + ] + + operations = [ + migrations.AddField( + model_name='registrovotacao', + name='data_hora', + field=models.DateTimeField(auto_now_add=True, null=True, verbose_name='Data/Hora'), + ), + migrations.AddField( + model_name='registrovotacao', + name='ip', + field=models.CharField(blank=True, default='', max_length=30, verbose_name='IP'), + ), + migrations.AddField( + model_name='registrovotacao', + name='user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/sapl/sessao/models.py b/sapl/sessao/models.py index 725898b57..5d2d1c7cc 100644 --- a/sapl/sessao/models.py +++ b/sapl/sessao/models.py @@ -456,6 +456,19 @@ class RegistroVotacao(models.Model): verbose_name=_('Abstenções')) observacao = models.TextField( blank=True, verbose_name=_('Observações')) + user = models.ForeignKey(get_settings_auth_user_model(), + on_delete=models.PROTECT, + null=True, + blank=True) + ip = models.CharField(verbose_name=_('IP'), + max_length=30, + blank=True, + default='') + data_hora = models.DateTimeField( + verbose_name=_('Data/Hora'), + auto_now_add=True, + blank=True, + null=True) class Meta: verbose_name = _('Votação') diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 08adf1fa0..74c9094e9 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -35,7 +35,7 @@ from sapl.parlamentares.models import (Filiacao, Legislatura, Mandato, Parlamentar, SessaoLegislativa) from sapl.sessao.apps import AppConfig from sapl.sessao.forms import ExpedienteMateriaForm, OrdemDiaForm -from sapl.utils import show_results_filter_set, remover_acentos +from sapl.utils import show_results_filter_set, remover_acentos, get_client_ip from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, BlocoForm, ExpedienteForm, JustificativaAusenciaForm, OcorrenciaSessaoForm, ListMateriaForm, @@ -2163,6 +2163,8 @@ class VotacaoView(SessaoPermissionMixin): votacao.ordem_id = ordem_id votacao.tipo_resultado_votacao_id = int( request.POST['resultado_votacao']) + votacao.user = request.user + votacao.ip = get_client_ip(request) votacao.save() except Exception as e: username = request.user.username @@ -2383,6 +2385,8 @@ class VotacaoNominalAbstract(SessaoPermissionMixin): votacao.numero_votos_nao = votos_nao votacao.numero_abstencoes = abstencoes votacao.observacao = request.POST.get('observacao', None) + votacao.user = request.user + votacao.ip = get_client_ip(request) votacao.materia_id = materia_votacao.materia.id if self.ordem: @@ -2410,6 +2414,8 @@ class VotacaoNominalAbstract(SessaoPermissionMixin): voto_parlamentar.voto = voto voto_parlamentar.parlamentar_id = parlamentar_id voto_parlamentar.votacao_id = votacao.id + voto_parlamentar.user = request.user + voto_parlamentar.ip = get_client_ip(request) voto_parlamentar.save() resultado = form.cleaned_data['resultado_votacao'] @@ -2847,10 +2853,10 @@ class VotacaoExpedienteView(SessaoPermissionMixin): if (int(request.POST['voto_presidente']) == 0): qtde_presentes -= 1 - if (qtde_votos > qtde_presentes or qtde_votos < qtde_presentes): + if qtde_votos != qtde_presentes: form._errors["total_votos"] = ErrorList([u""]) return self.render_to_response(context) - elif (qtde_presentes == qtde_votos): + else: try: votacao = RegistroVotacao() votacao.numero_votos_sim = int(request.POST['votos_sim']) @@ -2861,6 +2867,8 @@ class VotacaoExpedienteView(SessaoPermissionMixin): votacao.expediente_id = expediente_id votacao.tipo_resultado_votacao_id = int( request.POST['resultado_votacao']) + votacao.user = request.user + votacao.ip = get_client_ip(request) votacao.save() except Exception as e: username = request.user.username @@ -3640,6 +3648,8 @@ class VotacaoEmBlocoSimbolicaView(PermissionRequiredForAppCrudMixin, TemplateVie resultado = TipoResultadoVotacao.objects.get( id=request.POST['resultado_votacao']) votacao.tipo_resultado_votacao = resultado + votacao.user = request.user + votacao.ip = get_client_ip(request) votacao.save() except Exception as e: username = request.user.username @@ -3671,6 +3681,8 @@ class VotacaoEmBlocoSimbolicaView(PermissionRequiredForAppCrudMixin, TemplateVie resultado = TipoResultadoVotacao.objects.get( id=request.POST['resultado_votacao']) votacao.tipo_resultado_votacao = resultado + votacao.user = request.user + votacao.ip = get_client_ip(request) votacao.save() except Exception as e: username = request.user.username @@ -3862,6 +3874,8 @@ class VotacaoEmBlocoNominalView(PermissionRequiredForAppCrudMixin, TemplateView) voto_parlamentar.voto = voto voto_parlamentar.parlamentar_id = parlamentar_id voto_parlamentar.votacao_id = votacao.id + voto_parlamentar.user = request.user + voto_parlamentar.ip = get_client_ip(request) voto_parlamentar.save() ordem.resultado = form.cleaned_data['resultado_votacao'].nome @@ -3889,6 +3903,8 @@ class VotacaoEmBlocoNominalView(PermissionRequiredForAppCrudMixin, TemplateView) votacao.materia = expediente.materia votacao.expediente = expediente votacao.tipo_resultado_votacao = form.cleaned_data['resultado_votacao'] + votacao.user = request.user + votacao.ip = get_client_ip(request) votacao.save() # Salva os votos de cada parlamentar @@ -3904,6 +3920,8 @@ class VotacaoEmBlocoNominalView(PermissionRequiredForAppCrudMixin, TemplateView) voto_parlamentar.voto = voto voto_parlamentar.parlamentar_id = parlamentar_id voto_parlamentar.votacao_id = votacao.id + voto_parlamentar.user = request.user + voto_parlamentar.ip = get_client_ip(request) voto_parlamentar.save() expediente.resultado = form.cleaned_data['resultado_votacao'].nome