diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py
index e3024d849..8f476d443 100644
--- a/sapl/protocoloadm/forms.py
+++ b/sapl/protocoloadm/forms.py
@@ -345,6 +345,12 @@ class ProtocoloDocumentForm(ModelForm):
numero = forms.IntegerField(
required=False, label=_('Número de Protocolo (opcional)'))
+ data_hora_manual = forms.ChoiceField(
+ label=_('Informar data e hora manualmente?'),
+ widget=forms.RadioSelect(),
+ choices=YES_NO_CHOICES,
+ initial=False)
+
class Meta:
model = Protocolo
fields = ['tipo_protocolo',
@@ -353,7 +359,9 @@ class ProtocoloDocumentForm(ModelForm):
'assunto',
'interessado',
'observacao',
- 'numero'
+ 'numero',
+ 'data',
+ 'hora',
]
def __init__(self, *args, **kwargs):
@@ -361,30 +369,56 @@ class ProtocoloDocumentForm(ModelForm):
row1 = to_row(
[(InlineRadios('tipo_protocolo'), 12)])
row2 = to_row(
- [('tipo_documento', 6),
- ('numero_paginas', 6)])
- row3 = to_row(
- [('assunto', 12)])
+ [('tipo_documento', 5),
+ ('numero_paginas', 2),
+ (Div(), 1),
+ (InlineRadios('data_hora_manual'), 4),
+ ])
+ row3 = to_row([
+ (Div(), 2),
+ (Alert(
+ """
+ Usuário: {} - {}
+ IP: {} - {}
+
+ """.format(
+ kwargs['initial']['user_data_hora_manual'],
+ Protocolo._meta.get_field(
+ 'user_data_hora_manual').help_text,
+ kwargs['initial']['ip_data_hora_manual'],
+ Protocolo._meta.get_field(
+ 'ip_data_hora_manual').help_text,
+
+ ),
+ dismiss=False,
+ css_class='alert-info'), 6),
+ ('data', 2),
+ ('hora', 2),
+ ])
row4 = to_row(
- [('interessado', 12)])
+ [('assunto', 12)])
row5 = to_row(
- [('observacao', 12)])
+ [('interessado', 12)])
row6 = to_row(
+ [('observacao', 12)])
+ row7 = to_row(
[('numero', 12)])
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(_('Identificação de Documento'),
row1,
- row2,
+ row2),
+ Fieldset(_('Protocolo com data e hora informados manualmente'),
row3,
- row4,
- row5,
- HTML(" "),
- ),
+ css_id='protocolo_data_hora_manual',
+ css_class='hidden'),
+ row4,
+ row5,
+ HTML(" "),
Fieldset(_('Número do Protocolo (Apenas se quiser que a numeração comece '
'a partir do número a ser informado)'),
- row6,
+ row7,
HTML(" "),
form_actions(label=_('Protocolar Documento'))
)
diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py
index d19cad770..5a14f6a05 100755
--- a/sapl/protocoloadm/views.py
+++ b/sapl/protocoloadm/views.py
@@ -492,6 +492,15 @@ class ProtocoloDocumentoView(PermissionRequiredMixin,
return reverse('sapl.protocoloadm:protocolo_mostrar',
kwargs={'pk': self.object.id})
+ def get_initial(self):
+ initial = super().get_initial()
+
+ initial['user_data_hora_manual'] = self.request.user.username
+ initial['ip_data_hora_manual'] = get_client_ip(self.request)
+ initial['data'] = datetime.now().date
+ initial['hora'] = datetime.now().time
+ return initial
+
def form_valid(self, form):
protocolo = form.save(commit=False)
username = self.request.user.username
@@ -538,6 +547,17 @@ class ProtocoloDocumentoView(PermissionRequiredMixin,
return self.render_to_response(self.get_context_data())
protocolo.ano = timezone.now().year
protocolo.assunto_ementa = self.request.POST['assunto']
+
+ if form.cleaned_data['data_hora_manual'] == 'True':
+ protocolo.timestamp = None
+ protocolo.user_data_hora_manual = username
+ protocolo.ip_data_hora_manual = get_client_ip(self.request)
+ else:
+ protocolo.data = None
+ protocolo.hora = None
+ protocolo.user_data_hora_manual = ''
+ protocolo.ip_data_hora_manual = ''
+
protocolo.save()
self.object = protocolo
return redirect(self.get_success_url())
diff --git a/sapl/templates/protocoloadm/protocolar_documento.html b/sapl/templates/protocoloadm/protocolar_documento.html
index 5cb1fa789..49cf4933f 100644
--- a/sapl/templates/protocoloadm/protocolar_documento.html
+++ b/sapl/templates/protocoloadm/protocolar_documento.html
@@ -14,3 +14,17 @@
{% block detail_content %}
{% crispy form %}
{% endblock detail_content %}
+
+{% block extra_js %}
+
+{% endblock %}
diff --git a/sapl/templates/protocoloadm/protocolo_mostrar.html b/sapl/templates/protocoloadm/protocolo_mostrar.html
index 4e733228b..d22464397 100644
--- a/sapl/templates/protocoloadm/protocolo_mostrar.html
+++ b/sapl/templates/protocoloadm/protocolo_mostrar.html
@@ -4,6 +4,14 @@
{% load crispy_forms_tags %}
{% load static %}
+{% block actions %}
+
+ {{ block.super }}
+