From 8274e01026d84773c52b2935d3886fc4483a3dd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o?= Date: Tue, 21 May 2019 14:45:31 -0300 Subject: [PATCH] =?UTF-8?q?Adicionar=20user=20e=20ip=20em=20Mat=C3=A9riaLe?= =?UTF-8?q?gislativa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/materia/forms.py | 4 ++ .../migrations/0050_auto_20190521_1148.py | 28 +++++++++++ sapl/materia/models.py | 14 ++++++ sapl/materia/views.py | 49 ++++++++++++++++++- sapl/templates/materia/layouts.yaml | 1 + 5 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 sapl/materia/migrations/0050_auto_20190521_1148.py diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index 0b8a0e451..6a50086e0 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -194,6 +194,10 @@ class MateriaLegislativaForm(FileFieldCheckMixin, ModelForm): model = MateriaLegislativa exclude = ['texto_articulado', 'autores', 'proposicao', 'anexadas', 'data_ultima_atualizacao'] + widgets = { + 'user': forms.HiddenInput(), + 'ip': forms.HiddenInput() + } def __init__(self, *args, **kwargs): super(MateriaLegislativaForm, self).__init__(*args, **kwargs) diff --git a/sapl/materia/migrations/0050_auto_20190521_1148.py b/sapl/materia/migrations/0050_auto_20190521_1148.py new file mode 100644 index 000000000..1a2945e60 --- /dev/null +++ b/sapl/materia/migrations/0050_auto_20190521_1148.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-05-21 14:48 +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), + ('materia', '0049_pautareuniao'), + ] + + operations = [ + migrations.AddField( + model_name='materialegislativa', + name='ip', + field=models.CharField(blank=True, default='', max_length=30, verbose_name='IP'), + ), + migrations.AddField( + model_name='materialegislativa', + name='user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL, verbose_name='Usuário'), + ), + ] diff --git a/sapl/materia/models.py b/sapl/materia/models.py index 182c705b9..096aabc97 100644 --- a/sapl/materia/models.py +++ b/sapl/materia/models.py @@ -279,6 +279,20 @@ class MateriaLegislativa(models.Model): auto_now=True, verbose_name=_('Data')) + user = models.ForeignKey( + get_settings_auth_user_model(), + verbose_name=_('Usuário'), + on_delete=models.PROTECT, + null=True, + blank=True + ) + ip = models.CharField( + verbose_name=_('IP'), + max_length=30, + blank=True, + default='' + ) + class Meta: verbose_name = _('Matéria Legislativa') verbose_name_plural = _('Matérias Legislativas') diff --git a/sapl/materia/views.py b/sapl/materia/views.py index d1d933e47..075b1b270 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -1603,6 +1603,16 @@ class MateriaLegislativaCrud(Crud): form_class = MateriaLegislativaForm + def form_valid(self, form): + self.object = form.save() + username = self.request.user.username + + self.object.user = self.request.user + self.object.ip = get_client_ip(self.request) + self.object.save() + + return super().form_valid(form) + @property def cancel_url(self): return self.search_url @@ -1612,8 +1622,43 @@ class MateriaLegislativaCrud(Crud): form_class = MateriaLegislativaForm def form_valid(self, form): + objeto_antigo = MateriaLegislativa.objects.get(pk=self.kwargs['pk']) + self.object = form.save() - username = self.request.user.username + objeto_novo = self.object + + if not( + objeto_antigo.tipo != objeto_novo.tipo or \ + objeto_antigo.ano != objeto_novo.ano or \ + objeto_antigo.numero != objeto_novo.numero or \ + objeto_antigo.data_apresentacao != objeto_novo.data_apresentacao or \ + objeto_antigo.numero_protocolo != objeto_novo.numero_protocolo or \ + objeto_antigo.tipo_apresentacao != objeto_novo.tipo_apresentacao or \ + objeto_antigo.texto_original != objeto_novo.texto_original or \ + objeto_antigo.apelido != objeto_novo.apelido or \ + objeto_antigo.dias_prazo != objeto_novo.dias_prazo or \ + objeto_antigo.polemica != objeto_novo.polemica or \ + objeto_antigo.objeto != objeto_novo.objeto or \ + objeto_antigo.regime_tramitacao != objeto_novo.regime_tramitacao or \ + objeto_antigo.em_tramitacao != objeto_novo.em_tramitacao or \ + objeto_antigo.data_fim_prazo != objeto_novo.data_fim_prazo or \ + objeto_antigo.data_publicacao != objeto_novo.data_publicacao or \ + objeto_antigo.complementar != objeto_novo.complementar or \ + objeto_antigo.tipo_origem_externa != objeto_novo.tipo_origem_externa or \ + objeto_antigo.numero_origem_externa != objeto_novo.numero_origem_externa or \ + objeto_antigo.ano_origem_externa != objeto_novo.ano_origem_externa or \ + objeto_antigo.local_origem_externa != objeto_novo.local_origem_externa or \ + objeto_antigo.data_origem_externa != objeto_novo.data_origem_externa or \ + objeto_antigo.ementa != objeto_novo.ementa or \ + objeto_antigo.indexacao != objeto_novo.indexacao or \ + objeto_antigo.observacao != objeto_novo.observacao + ): + self.object.user = objeto_antigo.user + self.object.ip = objeto_antigo.ip + else: + self.object.user = self.request.user + self.object.ip = get_client_ip(self.request) + self.object.save() if Anexada.objects.filter(materia_principal=self.kwargs['pk']).exists(): materia = MateriaLegislativa.objects.get(pk=self.kwargs['pk']) @@ -1622,7 +1667,7 @@ class MateriaLegislativaCrud(Crud): for anexada in anexadas: anexada.em_tramitacao = True if form.instance.em_tramitacao else False anexada.save() - + return super().form_valid(form) @property diff --git a/sapl/templates/materia/layouts.yaml b/sapl/templates/materia/layouts.yaml index 44090e522..5db0f0223 100644 --- a/sapl/templates/materia/layouts.yaml +++ b/sapl/templates/materia/layouts.yaml @@ -156,3 +156,4 @@ MateriaLegislativaDetail: - ementa - indexacao - observacao + - user ip