diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index 476b1a921..6c9ff032d 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -463,9 +463,12 @@ class TramitacaoForm(ModelForm): 'data_fim_prazo', 'texto', 'user', - 'ip'] + 'ip', + 'ultima_edicao'] + widgets = {'user': forms.HiddenInput(), - 'ip': forms.HiddenInput()} + 'ip': forms.HiddenInput(), + 'ultima_edicao': forms.HiddenInput()} def __init__(self, *args, **kwargs): super(TramitacaoForm, self).__init__(*args, **kwargs) diff --git a/sapl/materia/migrations/0052_tramitacao_ultima_edicao.py b/sapl/materia/migrations/0052_tramitacao_ultima_edicao.py new file mode 100644 index 000000000..6be7aa254 --- /dev/null +++ b/sapl/materia/migrations/0052_tramitacao_ultima_edicao.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-08-01 22:45 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('materia', '0051_auto_20190703_1414'), + ] + + operations = [ + migrations.AddField( + model_name='tramitacao', + name='ultima_edicao', + field=models.DateTimeField(blank=True, null=True, verbose_name='Data e Hora da Edição'), + ), + ] diff --git a/sapl/materia/models.py b/sapl/materia/models.py index f5425363a..4b5baa0ad 100644 --- a/sapl/materia/models.py +++ b/sapl/materia/models.py @@ -1083,6 +1083,10 @@ class Tramitacao(models.Model): max_length=30, blank=True, default='') + ultima_edicao = models.DateTimeField( + verbose_name=_('Data e Hora da Edição'), + blank=True, null=True + ) class Meta: verbose_name = _('Tramitação') diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 94f10f539..49d744d38 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -1243,6 +1243,10 @@ class TramitacaoCrud(MasterDetailCrud): initial['data_tramitacao'] = timezone.now().date() initial['ip'] = get_client_ip(self.request) initial['user'] = self.request.user + + tz = timezone.get_current_timezone() + initial['ultima_edicao'] = tz.localize(datetime.now()) + return initial def get_context_data(self, **kwargs): @@ -1324,11 +1328,15 @@ class TramitacaoCrud(MasterDetailCrud): ] # Se não houve qualquer alteração em um dos dados, mantém o usuário - # e ip + # e ip e data e hora de última edição for atributo in atributos: if dict_objeto_antigo[atributo] != dict_objeto_novo[atributo]: self.object.user = user self.object.ip = get_client_ip(self.request) + + tz = timezone.get_current_timezone() + self.object.ultima_edicao = tz.localize(datetime.now()) + self.object.save() break diff --git a/sapl/templates/materia/tramitacao_detail.html b/sapl/templates/materia/tramitacao_detail.html index 2015ef513..5f09e5be0 100644 --- a/sapl/templates/materia/tramitacao_detail.html +++ b/sapl/templates/materia/tramitacao_detail.html @@ -1,18 +1,17 @@ {% extends "crud/detail_detail.html" %} {% load i18n %} - {% block detail_content %} {{ block.super }} {% if user.is_superuser %}
{% if tramitacao.user %} -
+

Usuário

@@ -20,13 +19,27 @@
{% endif %} {% if tramitacao.ip %} -
+

IP

- {{tramitacao.ip}} + {{ tramitacao.ip }} +
+
+
+
+
+ {% endif %} + {% if tramitacao.ultima_edicao %} +
+
+

Data e Hora da Edição

+
+
+
+ {{ tramitacao.ultima_edicao }}