Browse Source

3076 adicionar campo para complemento em doc administrativo (#3077)

* Adicionando campo de caractere identificador Fix #3076

* Desabilitando o acrescimo do numero do doc quando ha a existencia do caractere

* Adaptando testes

* Mudando node de caracter identificador para complemento

* Melhorando cadastro de complemento
pull/3163/head
Ulysses Lara 5 years ago
committed by Edward Ribeiro
parent
commit
fa4608bdf8
  1. 35
      sapl/protocoloadm/forms.py
  2. 20
      sapl/protocoloadm/migrations/0031_documentoadministrativo_caractere_identificador.py
  3. 4
      sapl/protocoloadm/models.py
  4. 1
      sapl/protocoloadm/tests/test_protocoloadm.py
  5. 9
      sapl/protocoloadm/views.py
  6. 2
      sapl/templates/protocoloadm/documentoadministrativo_filter.html
  7. 22
      sapl/templates/protocoloadm/documentoadministrativo_form.html
  8. 3
      sapl/templates/protocoloadm/layouts.yaml

35
sapl/protocoloadm/forms.py

@ -1,3 +1,4 @@
import re
import django_filters
import logging
@ -180,6 +181,7 @@ class DocumentoAdministrativoFilterSet(django_filters.FilterSet):
model = DocumentoAdministrativo
fields = ['tipo',
'numero',
'complemento',
'protocolo__numero',
'numero_externo',
'data',
@ -200,17 +202,21 @@ class DocumentoAdministrativoFilterSet(django_filters.FilterSet):
('o', 4), ])
row2 = to_row(
[('numero', 2),
('ano', 2),
('protocolo__numero', 2),
('numero_externo', 2),
('data', 4)])
[('numero', 5),
('complemento',2),
('ano', 5)])
row3 = to_row(
[('protocolo__numero', 4),
('numero_externo', 4),
('data', 4)
])
row4 = to_row(
[('interessado', 6),
('assunto', 6)])
row4 = to_row(
row5 = to_row(
[
('tramitacao', 2),
('tramitacaoadministrativo__status', 4),
@ -239,7 +245,7 @@ class DocumentoAdministrativoFilterSet(django_filters.FilterSet):
Fieldset(_('Pesquisar Documento'),
row1, row2,
row3, row4,
buttons,)
row5, buttons,)
)
@ -1080,6 +1086,7 @@ class DocumentoAdministrativoForm(FileFieldCheckMixin, ModelForm):
model = DocumentoAdministrativo
fields = ['tipo',
'numero',
'complemento',
'ano',
'data',
'numero_protocolo',
@ -1115,10 +1122,18 @@ class DocumentoAdministrativoForm(FileFieldCheckMixin, ModelForm):
numero_protocolo = self.data['numero_protocolo']
ano_protocolo = self.data['ano_protocolo']
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 \
@ -1128,7 +1143,9 @@ class DocumentoAdministrativoForm(FileFieldCheckMixin, ModelForm):
if not self.instance.pk or mudanca_doc:
doc_exists = DocumentoAdministrativo.objects.filter(numero=numero_documento,
tipo=tipo_documento,
ano=ano_documento).exists()
ano=ano_documento,
complemento=complemento).exists()
if doc_exists:
self.logger.error("DocumentoAdministrativo (numero={}, tipo={} e ano={}) já existe."
.format(numero_documento, tipo_documento, ano_documento))
@ -1194,7 +1211,7 @@ class DocumentoAdministrativoForm(FileFieldCheckMixin, ModelForm):
def __init__(self, *args, **kwargs):
row1 = to_row(
[('tipo', 6), ('numero', 3), ('ano', 3)])
[('tipo', 3), ('numero', 3),('complemento', 3), ('ano', 3)])
row2 = to_row(
[('data', 4), ('numero_protocolo', 4), ('ano_protocolo', 4)])

20
sapl/protocoloadm/migrations/0031_documentoadministrativo_caractere_identificador.py

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.26 on 2020-01-15 14:41
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('protocoloadm', '0030_auto_20200114_1121'),
]
operations = [
migrations.AddField(
model_name='documentoadministrativo',
name='complemento',
field=models.CharField(blank=True, max_length=10, verbose_name='Complemento'),
),
]

4
sapl/protocoloadm/models.py

@ -134,6 +134,10 @@ class DocumentoAdministrativo(models.Model):
TipoDocumentoAdministrativo, on_delete=models.PROTECT,
verbose_name=_('Tipo Documento'))
numero = models.PositiveIntegerField(verbose_name=_('Número'))
complemento = models.CharField(max_length=10, blank=True,
verbose_name=_('Complemento'))
ano = models.PositiveSmallIntegerField(verbose_name=_('Ano'),
choices=RANGE_ANOS)
protocolo = models.ForeignKey(

1
sapl/protocoloadm/tests/test_protocoloadm.py

@ -398,6 +398,7 @@ def test_documento_administrativo_protocolo_inexistente():
'tipo': str(tipo.pk),
'assunto': 'teste',
'numero': '1',
'complemento':'',
'data': '2017-10-10',
'numero_protocolo': '11',
'ano_protocolo': '2017',

9
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)

2
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%}
<tr>
<td>
<strong><a href="{% url 'sapl.protocoloadm:documentoadministrativo_detail' d.id %}">{{d.tipo.sigla}} {{d.numero}}/{{d.ano}} - {{d.tipo}}</strong></a></br>
<strong><a href="{% url 'sapl.protocoloadm:documentoadministrativo_detail' d.id %}">{{d.tipo.sigla}} {{d.numero}}{%if d.complemento %}-{{d.complemento}}{% endif %}/{{d.ano}} - {{d.tipo}}</strong></a></br>
<strong>Interessado:</strong>&nbsp;{{ d.interessado|default_if_none:"Não informado"}}
</br>
<strong>Assunto:</strong>&nbsp;{{ d.assunto|safe }}

22
sapl/templates/protocoloadm/documentoadministrativo_form.html

@ -3,16 +3,18 @@
{% block extra_js %}
<script language="Javascript">
function atualizar_numero_documento(){
var tipo = $("#id_tipo").val()
var ano = $("#id_ano").val()
if (tipo){
$.get(
"{% url 'sapl.protocoloadm:atualizar_numero_documento' %}",
{tipo: tipo, ano:ano},
function(data, status) {
$("#id_numero").val(data.numero);
$("#id_ano").val(data.ano);
});
if ($('id_complemento').val() ==''){
var tipo = $("#id_tipo").val()
var ano = $("#id_ano").val()
if (tipo){
$.get(
"{% url 'sapl.protocoloadm:atualizar_numero_documento' %}",
{tipo: tipo, ano:ano},
function(data, status) {
$("#id_numero").val(data.numero);
$("#id_ano").val(data.ano);
});
}
}
}
var fields = ["#id_tipo", "#id_ano"]

3
sapl/templates/protocoloadm/layouts.yaml

@ -5,7 +5,8 @@ TipoDocumentoAdministrativo:
DocumentoAdministrativo:
{% trans 'Identificação Básica' %}:
- tipo numero ano
- tipo
- numero complemento ano
- data protocolo
- assunto
- interessado tramitacao

Loading…
Cancel
Save