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 @@ Data / Horário - {{ protocolo.data|date:"d/m/Y" }} - {{ protocolo.timestamp|date:"H:i:s" }} + {{ protocolo.timestamp|date:"d/m/Y" }} - {{ protocolo.timestamp|date:"H:i:s" }} {% if protocolo.tipo_processo == 1 %} diff --git a/sapl/templates/protocoloadm/protocolo_filter.html b/sapl/templates/protocoloadm/protocolo_filter.html index 38e1ebf7a..02c0673fa 100644 --- a/sapl/templates/protocoloadm/protocolo_filter.html +++ b/sapl/templates/protocoloadm/protocolo_filter.html @@ -44,8 +44,11 @@ {% if p.anulado %}  ** NULO **{% endif %}
Assunto: {{ p.assunto_ementa|default_if_none:"Não informado"}}
+ {% 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 p.tipo_processo == 0 %} Interessado: {{ p.interessado|default_if_none:"Não informado" }}
{% elif p.tipo_processo == 1 %} diff --git a/sapl/templates/protocoloadm/protocolo_mostrar.html b/sapl/templates/protocoloadm/protocolo_mostrar.html index 4c9312c5d..c45c70bec 100644 --- a/sapl/templates/protocoloadm/protocolo_mostrar.html +++ b/sapl/templates/protocoloadm/protocolo_mostrar.html @@ -9,7 +9,11 @@ Etiqueta Individual
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 '
%s
' % html -def register_all_models_in_admin(module_name): +def register_all_models_in_admin(module_name, exclude_list=[]): appname = module_name.split('.') appname = appname[1] if appname[0] == 'sapl' else appname[0] app = apps.get_app_config(appname) for model in app.get_models(): class CustomModelAdmin(CompareVersionAdmin): list_display = [f.name for f in model._meta.fields - if f.name != 'id'] + if f.name != 'id' and f.name not in exclude_list] if not admin.site.is_registered(model): admin.site.register(model, CustomModelAdmin) diff --git a/setup.py b/setup.py index 98b9bce00..727c9d896 100644 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ install_requires = [ ] setup( name='interlegis-sapl', - version='3.1.110', + version='3.1.111', packages=find_packages(), include_package_data=True, license='GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007',