From d07c9e84b00cc986f4d2c3783f23d440b3a6238e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Rodrigues?= Date: Thu, 8 Aug 2019 18:37:43 -0300 Subject: [PATCH] =?UTF-8?q?Impl.=20#2909=20-=20Tramita=C3=A7=C3=A3o=20Docu?= =?UTF-8?q?mento=20Administrativo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/protocoloadm/forms.py | 35 +++++++++---- ..._tramitacaoadministrativo_ultima_edicao.py | 20 ++++++++ sapl/protocoloadm/models.py | 4 ++ sapl/protocoloadm/views.py | 18 +++++-- .../tramitacaoadministrativo_detail.html | 50 ++++++++++++------- 5 files changed, 97 insertions(+), 30 deletions(-) create mode 100644 sapl/protocoloadm/migrations/0024_tramitacaoadministrativo_ultima_edicao.py 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 %}
{% if tramitacaoadministrativo.user %} -
-
-

Usuário

-
- +
+
+

Usuário

+ +
{% endif %} {% if tramitacaoadministrativo.ip %} -
-
-

IP

-
-
-
- {{tramitacaoadministrativo.ip}} -
-
+
+
+

IP

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

Data e Hora da Edição

+
+
+
+ {{ tramitacao.ultima_edicao }} +
+
+
+
{% endif %}