diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index cae67d2ab..3310129d3 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -686,9 +686,12 @@ class TramitacaoAdmForm(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): @@ -803,7 +806,8 @@ class TramitacaoAdmForm(ModelForm): texto=tramitacao.texto, data_fim_prazo=tramitacao.data_fim_prazo, user=tramitacao.user, - ip=tramitacao.ip + ip=tramitacao.ip, + ultima_edicao=tramitacao.ultima_edicao )) TramitacaoAdministrativo.objects.bulk_create(lista_tramitacao) @@ -844,9 +848,12 @@ class TramitacaoAdmEditForm(TramitacaoAdmForm): 'data_fim_prazo', 'texto', 'user', - 'ip'] + 'ip', + 'ultima_edicao'] + widgets = {'user': forms.HiddenInput(), - 'ip': forms.HiddenInput()} + 'ip': forms.HiddenInput(), + 'ultima_edicao': forms.HiddenInput()} def clean(self): super(TramitacaoAdmEditForm, self).clean() @@ -883,6 +890,7 @@ class TramitacaoAdmEditForm(TramitacaoAdmForm): cd['data_fim_prazo'] != obj.data_fim_prazo): cd['user'] = obj.user cd['ip'] = obj.ip + cd['ultima_edicao'] = obj.ultima_edicao cd['data_tramitacao'] = obj.data_tramitacao cd['unidade_tramitacao_local'] = obj.unidade_tramitacao_local @@ -914,6 +922,7 @@ class TramitacaoAdmEditForm(TramitacaoAdmForm): tram_anexada.data_fim_prazo = nova_tram_principal.data_fim_prazo tram_anexada.user = nova_tram_principal.user tram_anexada.ip = nova_tram_principal.ip + tram_anexada.ultima_edicao = nova_tram_principal.ultima_edicao tram_anexada.save() da.tramitacao = False if nova_tram_principal.status.indicador == "F" else True @@ -1487,9 +1496,12 @@ class TramitacaoEmLoteAdmForm(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): @@ -1611,9 +1623,12 @@ class TramitacaoEmLoteAdmForm(ModelForm): @transaction.atomic def save(self, commit=True): cd = self.cleaned_data + documentos = self.initial['documentos'] user = self.initial['user'] if 'user' in self.initial else None ip = self.initial['ip'] if 'ip' in self.initial else '' + ultima_edicao = self.initial['ultima_edicao'] if 'ultima_edicao' in self.initial else '' + tramitar_anexados = AppConfig.attr('tramitacao_documento') for doc_id in documentos: doc = DocumentoAdministrativo.objects.get(id=doc_id) @@ -1628,7 +1643,8 @@ class TramitacaoEmLoteAdmForm(ModelForm): texto=cd['texto'], data_fim_prazo=cd['data_fim_prazo'], user=user, - ip=ip + ip=ip, + ultima_edicao=ultima_edicao ) doc.tramitacao = False if tramitacao.status.indicador == "F" else True doc.save() @@ -1653,7 +1669,8 @@ class TramitacaoEmLoteAdmForm(ModelForm): texto=tramitacao.texto, data_fim_prazo=tramitacao.data_fim_prazo, user=tramitacao.user, - ip=tramitacao.ip + ip=tramitacao.ip, + ultima_edicao=tramitacao.ultima_edicao )) TramitacaoAdministrativo.objects.bulk_create(lista_tramitacao) diff --git a/sapl/protocoloadm/migrations/0024_tramitacaoadministrativo_ultima_edicao.py b/sapl/protocoloadm/migrations/0024_tramitacaoadministrativo_ultima_edicao.py new file mode 100644 index 000000000..f9df6704c --- /dev/null +++ b/sapl/protocoloadm/migrations/0024_tramitacaoadministrativo_ultima_edicao.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-08-08 21:14 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('protocoloadm', '0023_merge_20190802_1112'), + ] + + operations = [ + migrations.AddField( + model_name='tramitacaoadministrativo', + name='ultima_edicao', + field=models.DateField(blank=True, null=True, verbose_name='Data e Hora da Edição'), + ), + ] diff --git a/sapl/protocoloadm/models.py b/sapl/protocoloadm/models.py index e4fa79a55..ef355ffd7 100644 --- a/sapl/protocoloadm/models.py +++ b/sapl/protocoloadm/models.py @@ -340,6 +340,10 @@ class TramitacaoAdministrativo(models.Model): max_length=30, blank=True, default='') + ultima_edicao = models.DateField( + verbose_name=_('Data e Hora da Edição'), + blank=True, null=True + ) class Meta: verbose_name = _('Tramitação de Documento Administrativo') diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index f8135e1bc..705f536fa 100755 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -1141,6 +1141,10 @@ class TramitacaoAdmCrud(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): @@ -1204,6 +1208,10 @@ class TramitacaoAdmCrud(MasterDetailCrud): initial = super(UpdateView, self).get_initial() 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 form_valid(self, form): @@ -1514,15 +1522,19 @@ class PrimeiraTramitacaoEmLoteAdmView(PermissionRequiredMixin, FilterView): user = request.user ip = get_client_ip(request) + tz = timezone.get_current_timezone() + ultima_edicao = tz.localize(datetime.now()) + documentos_ids = request.POST.getlist('documentos') if not documentos_ids: msg = _("Escolha algum Documento para ser tramitado.") messages.add_message(request, messages.ERROR, msg) return self.get(request, self.kwargs) - form = TramitacaoEmLoteAdmForm(request.POST, - initial={'documentos': documentos_ids, - 'user': user, 'ip': ip}) + form = TramitacaoEmLoteAdmForm(request.POST, + initial= {'documentos': documentos_ids, + 'user': user, 'ip':ip, + 'ultima_edicao': ultima_edicao}) if form.is_valid(): form.save() diff --git a/sapl/templates/protocoloadm/tramitacaoadministrativo_detail.html b/sapl/templates/protocoloadm/tramitacaoadministrativo_detail.html index 9cce240ba..7d95f6c08 100644 --- a/sapl/templates/protocoloadm/tramitacaoadministrativo_detail.html +++ b/sapl/templates/protocoloadm/tramitacaoadministrativo_detail.html @@ -20,31 +20,45 @@ {% if user.is_superuser %}
Usuário
-Usuário
+ +IP
-IP
+Data e Hora da Edição
+