diff --git a/docker-compose.yml b/docker-compose.yml index 540062354..625fbbaa2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,7 +11,7 @@ sapldb: ports: - "5432:5432" sapl: - image: interlegis/sapl:3.1.110 + image: interlegis/sapl:3.1.111 restart: always environment: ADMIN_PASSWORD: interlegis diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py index ff9b12d56..97e0ef9b4 100644 --- a/sapl/materia/forms.py +++ b/sapl/materia/forms.py @@ -1839,11 +1839,7 @@ class ConfirmarProposicaoForm(ProposicaoForm): protocolo = Protocolo() protocolo.numero = (nm['numero__max'] + 1) if nm['numero__max'] else 1 protocolo.ano = timezone.now().year - protocolo.data = timezone.now() - protocolo.hora = timezone.now().time() - # TODO transformar campo timestamp em auto_now_add - protocolo.timestamp = timezone.now() protocolo.tipo_protocolo = '1' protocolo.interessado = str(proposicao.autor) diff --git a/sapl/materia/views.py b/sapl/materia/views.py index da147dfaf..1e4638e73 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -191,7 +191,7 @@ class CriarProtocoloMateriaView(CreateView): context['form'].fields['tipo'].initial = protocolo.tipo_materia context['form'].fields['numero'].initial = numero context['form'].fields['ano'].initial = protocolo.ano - context['form'].fields['data_apresentacao'].initial = protocolo.data + context['form'].fields['data_apresentacao'].initial = protocolo.timestamp.date() context['form'].fields['numero_protocolo'].initial = protocolo.numero context['form'].fields['ementa'].initial = protocolo.assunto_ementa diff --git a/sapl/protocoloadm/admin.py b/sapl/protocoloadm/admin.py index 5c02ebd40..c786c0faa 100644 --- a/sapl/protocoloadm/admin.py +++ b/sapl/protocoloadm/admin.py @@ -1,3 +1,6 @@ from sapl.utils import register_all_models_in_admin -register_all_models_in_admin(__name__) +register_all_models_in_admin(__name__, exclude_list=['timestamp', + 'data', + 'hora', + 'timestamp_anulacao']) diff --git a/sapl/protocoloadm/migrations/0005_auto_20180824_1241.py b/sapl/protocoloadm/migrations/0005_auto_20180824_1241.py new file mode 100644 index 000000000..f18dd9717 --- /dev/null +++ b/sapl/protocoloadm/migrations/0005_auto_20180824_1241.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.13 on 2018-08-24 15:41 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('protocoloadm', '0004_documentoadministrativo_numero_externo'), + ] + + operations = [ + migrations.AlterField( + model_name='protocolo', + name='data', + field=models.DateField(blank=True, null=True), + ), + migrations.AlterField( + model_name='protocolo', + name='hora', + field=models.TimeField(blank=True, null=True), + ), + migrations.AlterField( + model_name='protocolo', + name='timestamp', + field=models.DateTimeField(default=django.utils.timezone.now), + ), + ] diff --git a/sapl/protocoloadm/models.py b/sapl/protocoloadm/models.py index 33ceade8c..1fd38e720 100644 --- a/sapl/protocoloadm/models.py +++ b/sapl/protocoloadm/models.py @@ -1,5 +1,6 @@ import reversion from django.db import models +from django.utils import timezone from django.utils.translation import ugettext_lazy as _ from model_utils import Choices @@ -57,10 +58,11 @@ class Protocolo(models.Model): verbose_name=_('Ano do Protocolo')) # TODO: Remover esses dois campos após migração, # TODO: pois timestamp supre a necessidade - data = models.DateField() - hora = models.TimeField() - # TODO transformar campo timestamp em auto_now_add - timestamp = models.DateTimeField() + data = models.DateField(null=True, blank=True) + hora = models.TimeField(null=True, blank=True) + # Não foi utilizado auto_now_add=True em timestamp porque + # ele usa datetime.now que não é timezone aware. + timestamp = models.DateTimeField(default=timezone.now) tipo_protocolo = models.PositiveIntegerField( blank=True, null=True, verbose_name=_('Tipo de Protocolo')) tipo_processo = models.PositiveIntegerField() diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index 4e4063ba6..d86063887 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -280,6 +280,7 @@ class AnularProtocoloAdmView(PermissionRequiredMixin, CreateView): form.cleaned_data['justificativa_anulacao']) protocolo.user_anulacao = form.cleaned_data['user_anulacao'] protocolo.ip_anulacao = form.cleaned_data['ip_anulacao'] + protocolo.timestamp_anulacao = timezone.now() protocolo.save() return redirect(self.get_success_url()) @@ -332,11 +333,7 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, messages.add_message(self.request, messages.ERROR, msg) return self.render_to_response(self.get_context_data()) protocolo.ano = timezone.now().year - protocolo.data = timezone.now() - protocolo.hora = timezone.now().time() - protocolo.timestamp = timezone.now() protocolo.assunto_ementa = self.request.POST['assunto'] - protocolo.save() self.object = protocolo return redirect(self.get_success_url()) @@ -418,10 +415,14 @@ class ComprovanteProtocoloView(PermissionRequiredMixin, TemplateView): autenticacao = _("** NULO **") if not protocolo.anulado: + if protocolo.timestamp: + data = protocolo.timestamp.strftime("%Y/%m/%d") + else: + data = protocolo.data.strftime("%Y/%m/%d") + # data is not i18n sensitive 'Y-m-d' is the right format. autenticacao = str(protocolo.tipo_processo) + \ - protocolo.data.strftime("%Y/%m/%d") + \ - str(protocolo.numero).zfill(6) + data + str(protocolo.numero).zfill(6) context.update({"protocolo": protocolo, "barcode": barcode, @@ -478,9 +479,6 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): messages.add_message(self.request, messages.ERROR, msg) return self.render_to_response(self.get_context_data()) protocolo.ano = timezone.now().year - protocolo.data = timezone.now().date() - protocolo.hora = timezone.now().time() - protocolo.timestamp = timezone.now() protocolo.tipo_protocolo = 0 protocolo.tipo_processo = '1' # TODO validar o significado diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 57752753e..50aa9c44d 100644 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -827,9 +827,12 @@ def get_protocolos(prots): dic['titulo'] = str(protocolo.numero) + '/' + str(protocolo.ano) ts = timezone.localtime(protocolo.timestamp) - - dic['data'] = ts.strftime("%d/%m/%Y") + ' - Horário:' + \ - ts.strftime("%H:%m") + if protocolo.timestamp: + dic['data'] = ts.strftime("%d/%m/%Y") + ' - Horário:' + \ + ts.strftime("%H:%m") + else: + dic['data'] = protocolo.data.strftime("%d/%m/%Y") + ' - Horário:' \ + + protocolo.hora.strftime("%H:%m") dic['txt_assunto'] = protocolo.assunto_ementa @@ -941,9 +944,12 @@ def get_etiqueta_protocolos(prots): dic['titulo'] = str(p.numero) + '/' + str(p.ano) tz_hora = timezone.localtime(p.timestamp) - - dic['data'] = 'Data: ' + tz_hora.strftime( - "%d/%m/%Y") + ' - Horário: ' + tz_hora.strftime("%H:%M") + if p.timestamp: + dic['data'] = 'Data: ' + tz_hora.strftime( + "%d/%m/%Y") + ' - Horário: ' + tz_hora.strftime("%H:%M") + else: + dic['data'] = 'Data: ' + p.data.strftime( + "%d/%m/%Y") + ' - Horário: ' + p.hora.strftime("%H:%M") dic['txt_assunto'] = p.assunto_ementa dic['txt_interessado'] = p.interessado diff --git a/sapl/templates/base.html b/sapl/templates/base.html index 61db86669..8c4e24b6c 100644 --- a/sapl/templates/base.html +++ b/sapl/templates/base.html @@ -262,8 +262,7 @@ $(document).ready(function(){ let iframe_set_backend = {{ request|has_iframe|lower }} if (iframe_set_backend && !inIframe() ) { - let href = location.href - location.href = href + '?iframe=0' + location.href = location.origin + '?iframe=0' } }); diff --git a/sapl/templates/protocoloadm/comprovante.html b/sapl/templates/protocoloadm/comprovante.html index 630af88c0..bef9ecf8f 100644 --- a/sapl/templates/protocoloadm/comprovante.html +++ b/sapl/templates/protocoloadm/comprovante.html @@ -59,7 +59,7 @@
Assunto: {{ protocolo.assunto_ementa|default:"Não informado" }}
- Data Protocolo: {{ protocolo.timestamp|localtime|date:"d/m/Y" }} - Horário: {{ protocolo.timestamp|localtime|date:"G:i:s" }}
+ {% if p.timestamp%}
+ Data Protocolo: {{ p.timestamp|localtime|date:"d/m/Y"|default_if_none:"Não informado" }} - Horário: {{ p.timestamp|localtime|date:"G:i:s" }}
+ {% else %}
+ Data Protocolo: {{ p.data|date:"d/m/Y"|default_if_none:"Não informado" }} - Horário: {{ p.hora|date:"G:i:s" }}
+ {% endif %}
{% if protocolo.tipo_processo == 0 %}
Interessado: {{ protocolo.interessado|default_if_none:"Não informado" }}
diff --git a/sapl/utils.py b/sapl/utils.py
index a656fa5a0..5c461f913 100644
--- a/sapl/utils.py
+++ b/sapl/utils.py
@@ -224,14 +224,14 @@ class RangeWidgetOverride(forms.MultiWidget):
return '