Browse Source

corrige erro apontado pelo teste de doc adms inexistentes

pull/2448/head
Leandro Roberto 6 years ago
parent
commit
6c3ca7e57b
  1. 6
      sapl/protocoloadm/forms.py
  2. 7
      sapl/protocoloadm/tests/test_protocoloadm.py
  3. 20
      sapl/utils.py

6
sapl/protocoloadm/forms.py

@ -20,8 +20,8 @@ from sapl.materia.models import (MateriaLegislativa, TipoMateriaLegislativa,
UnidadeTramitacao)
from sapl.utils import (RANGE_ANOS, YES_NO_CHOICES, AnoNumeroOrderingFilter,
RangeWidgetOverride, autor_label, autor_modal,
choice_anos_com_protocolo,
choice_anos_com_documentoadministrativo, ANO_CHOICES)
choice_anos_com_protocolo, choice_force_optional,
choice_anos_com_documentoadministrativo)
from .models import (AcompanhamentoDocumento, DocumentoAcessorioAdministrativo,
DocumentoAdministrativo,
@ -711,7 +711,7 @@ class DocumentoAdministrativoForm(ModelForm):
required=False,
label=Protocolo._meta.
get_field('ano').verbose_name,
choices=[('', '---------')] + choice_anos_com_protocolo(),
choices=choice_force_optional(choice_anos_com_protocolo),
widget=forms.Select(
attrs={'class': 'selector'}))

7
sapl/protocoloadm/tests/test_protocoloadm.py

@ -1,6 +1,7 @@
from datetime import date, timedelta
from django.core.urlresolvers import reverse
from django.utils import timezone
from django.utils.encoding import force_text
from django.utils.translation import ugettext_lazy as _
from model_mommy import mommy
@ -191,7 +192,7 @@ def test_create_tramitacao(admin_client):
'unidade_tramitacao_destino': unidade_tramitacao_destino_2.pk,
'documento': documento_adm.pk,
'status': status.pk,
'data_tramitacao': date.today() + timedelta(
'data_tramitacao': timezone.now().date() + timedelta(
days=1)},
follow=True)
@ -370,7 +371,9 @@ def test_documento_administrativo_protocolo_inexistente():
tipo = mommy.make(TipoDocumentoAdministrativo)
protocolo = mommy.make(Protocolo,
ano=2017,
numero=10)
numero=10,
anulado=False,
tipo_documento=tipo)
form = DocumentoAdministrativoForm(data={'ano': '2017',
'tipo': str(tipo.pk),

20
sapl/utils.py

@ -387,6 +387,26 @@ def choice_anos_com_sessaoplenaria():
return []
def choice_force_optional(callable):
""" Django-filter faz algo que tenha o mesmo sentido em ChoiceFilter,
no entanto, as funções choice_anos_... podem ser usadas em formulários
comuns de adição e/ou edição, com a particularidade de terem
required=False.
Neste caso para ser possível contar com a otimização de apenas mostrar anos
que estejam na base de dados e ainda colocar o item opcional '---------',
é necessário encapsular então, as funções choice_anos_... com a
esta função choice_force_optional... isso ocorre e foi aplicado
inicialmente no cadastro de documentos administrativos onde tem-se
opcionalmente a possibilidade de colocar o ano do protocolo.
Em ChoiceFilter choice_force_optional não deve ser usado pois duplicaria
o item opcional '---------' que ChoiceFilter o adiciona, como dito
anteriormente.
"""
def _func():
return [('', '---------')] + callable()
return _func
TIPOS_TEXTO_PERMITIDOS = (
'application/vnd.oasis.opendocument.text',
'application/x-vnd.oasis.opendocument.text',

Loading…
Cancel
Save