From 3d3c8ff1ed7e2d4b78b6e494aec5b437d00f46db Mon Sep 17 00:00:00 2001 From: Victor Fabre Date: Fri, 13 Apr 2018 12:39:18 -0300 Subject: [PATCH] Fix #1862 (#1867) --- sapl/protocoloadm/forms.py | 31 ++++++++++++++++++++++++++++--- sapl/protocoloadm/views.py | 18 +++++++++++++----- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index 9c9485ae4..eff6d09a1 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -308,6 +308,8 @@ class ProtocoloDocumentForm(ModelForm): observacao = forms.CharField(required=False, widget=forms.Textarea, label='Observação') + numero = forms.IntegerField(required=False, label='Número de Protocolo (opcional)') + class Meta: model = Protocolo fields = ['tipo_protocolo', @@ -316,6 +318,7 @@ class ProtocoloDocumentForm(ModelForm): 'assunto', 'interessado', 'observacao', + 'numero' ] def __init__(self, *args, **kwargs): @@ -331,6 +334,8 @@ class ProtocoloDocumentForm(ModelForm): [('interessado', 12)]) row5 = to_row( [('observacao', 12)]) + row6 = to_row( + [('numero', 12)]) self.helper = FormHelper() self.helper.layout = Layout( @@ -341,6 +346,11 @@ class ProtocoloDocumentForm(ModelForm): 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, + HTML(" "), form_actions(label=_('Protocolar Documento')) ) ) @@ -385,6 +395,8 @@ class ProtocoloMateriaForm(ModelForm): assunto_ementa = forms.CharField(required=True, widget=forms.Textarea, label='Ementa') + numero = forms.IntegerField(required=False, label='Número de Protocolo (opcional)') + class Meta: model = Protocolo fields = ['tipo_materia', @@ -395,7 +407,8 @@ class ProtocoloMateriaForm(ModelForm): 'observacao', 'numero_materia', 'ano_materia', - 'vincular_materia' + 'vincular_materia', + 'numero' ] def clean_autor(self): @@ -447,12 +460,24 @@ class ProtocoloMateriaForm(ModelForm): [('assunto_ementa', 12)]) row4 = to_row( [('observacao', 12)]) + row5 = to_row( + [('numero', 12)]) self.helper = FormHelper() self.helper.layout = Layout( Fieldset(_('Identificação da Matéria'), - row1, row2, row3, - row4, form_actions(label='Protocolar Matéria'))) + row1, + row2, + row3, + row4, + HTML(" "), + ), + Fieldset(_('Número do Protocolo (Apenas se quiser que a numeração comece' + ' a partir do número a ser informado)'), + row5, + HTML(" "), + form_actions(label=_('Protocolar Matéria'))) + ) super(ProtocoloMateriaForm, self).__init__( *args, **kwargs) diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index ee03daaff..2474bb919 100644 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -304,7 +304,12 @@ class ProtocoloDocumentoView(PermissionRequiredMixin, protocolo.tipo_processo = '0' # TODO validar o significado protocolo.anulado = False - protocolo.numero = (numero['numero__max'] + 1) if numero['numero__max'] else 1 + if not protocolo.numero: + protocolo.numero = (numero['numero__max'] + 1) if numero['numero__max'] else 1 + if protocolo.numero < (numero['numero__max'] + 1): + msg = _('Número de protocolo deve ser maior que {}').format(numero['numero__max']) + 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() @@ -415,6 +420,7 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): 'pk': protocolo.pk}) def form_valid(self, form): + protocolo = form.save(commit=False) try: numeracao = sapl.base.models.AppConfig.objects.last( ).sequencia_numeracao @@ -443,10 +449,12 @@ class ProtocoloMateriaView(PermissionRequiredMixin, CreateView): if numeracao is None: numero['numero__max'] = 0 - protocolo = Protocolo() - - protocolo.numero = ( - numero['numero__max'] + 1) if numero['numero__max'] else 1 + if not protocolo.numero: + protocolo.numero = (numero['numero__max'] + 1) if numero['numero__max'] else 1 + if protocolo.numero < (numero['numero__max'] + 1): + msg = _('Número de protocolo deve ser maior que {}').format(numero['numero__max']) + 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()