diff --git a/sapl/protocoloadm/forms.py b/sapl/protocoloadm/forms.py index cde7cd213..4c1b2957e 100644 --- a/sapl/protocoloadm/forms.py +++ b/sapl/protocoloadm/forms.py @@ -1,3 +1,4 @@ +import re import django_filters import logging @@ -201,9 +202,9 @@ class DocumentoAdministrativoFilterSet(django_filters.FilterSet): ('o', 4), ]) row2 = to_row( - [('numero', 4), - ('complemento',4), - ('ano', 4)]) + [('numero', 5), + ('complemento',2), + ('ano', 5)]) row3 = to_row( [('protocolo__numero', 4), @@ -1121,11 +1122,18 @@ class DocumentoAdministrativoForm(FileFieldCheckMixin, ModelForm): numero_protocolo = self.data['numero_protocolo'] ano_protocolo = self.data['ano_protocolo'] - complemento = self.data['complemento'] + complemento = re.sub('\s+', '', self.data['complemento']).upper() numero_documento = int(self.cleaned_data['numero']) tipo_documento = int(self.data['tipo']) ano_documento = int(self.data['ano']) + + equal_docs = DocumentoAdministrativo.objects.filter(numero=numero_documento, + ano=ano_documento, + complemento=complemento) + if equal_docs.exists() and equal_docs.first().pk != self.instance.pk: + raise ValidationError("Um documento administrativo com esse numero, complemento e ano já existe.") + # não permite atualizar para numero/ano/tipo existente if self.instance.pk: mudanca_doc = numero_documento != self.instance.numero \ diff --git a/sapl/protocoloadm/views.py b/sapl/protocoloadm/views.py index af3736824..6855ee9f5 100755 --- a/sapl/protocoloadm/views.py +++ b/sapl/protocoloadm/views.py @@ -1,5 +1,6 @@ from datetime import datetime import logging +import re from random import choice from string import ascii_letters, digits @@ -365,6 +366,10 @@ class DocumentoAdministrativoCrud(Crud): def cancel_url(self): return self.search_url + def form_valid(self, form): + form.instance.complemento = re.sub('\s+', '', form.instance.complemento).upper() + return super().form_valid(form) + class UpdateView(Crud.UpdateView): form_class = DocumentoAdministrativoForm layout_key = None @@ -376,7 +381,7 @@ class DocumentoAdministrativoCrud(Crud): self.object = form.save() dict_objeto_novo = self.object.__dict__ - + atributos = [ 'tipo_id', 'ano', 'numero', 'data', 'protocolo_id', 'assunto', 'interessado', 'tramitacao', 'restrito', 'texto_integral','numero_externo', @@ -393,6 +398,8 @@ class DocumentoAdministrativoCrud(Crud): self.object.save() break + + form.instance.complemento = re.sub('\s+', '', form.instance.complemento).upper() return super().form_valid(form) diff --git a/sapl/templates/protocoloadm/documentoadministrativo_filter.html b/sapl/templates/protocoloadm/documentoadministrativo_filter.html index 49234e5a6..e2442dc73 100644 --- a/sapl/templates/protocoloadm/documentoadministrativo_filter.html +++ b/sapl/templates/protocoloadm/documentoadministrativo_filter.html @@ -37,7 +37,7 @@ {% if request.user.is_anonymous and not d.restrito or not request.user.is_anonymous%} - {{d.tipo.sigla}} {{d.numero}}/{{d.ano}} - {{d.tipo}}
+ {{d.tipo.sigla}} {{d.numero}}{%if d.complemento %}-{{d.complemento}}{% endif %}/{{d.ano}} - {{d.tipo}}
Interessado: {{ d.interessado|default_if_none:"Não informado"}}
Assunto: {{ d.assunto|safe }}