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 }} +
+ {% trans 'Fazer nova pesquisa' %} +
+{% endblock %} + {% block detail_content %} Protocolo: {{ protocolo.numero|stringformat:'06d' }}/{{ protocolo.ano }} - Etiqueta Individual