Repository: interlegis/sapl

Issue:
Erro ao receber proposição
## Comportamento Atual
<!--- Se está descrevendo um bug, conte-nos o que acontece em vez do comportamento esperado. -->
<!--- Se está sugerindo uma mudança/melhoria, explique a diferença com o comportamento atual. -->
Ao receber uma proposição em que o campo "número matéria futuro" não está preenchido ocorre um erro 500.
## Possível Solução
<!--- Não é obrigatório, mas sugira uma possível correção/razão para o bug -->
<!--- ou ideias de como implementar a adição/mudança. -->
O erro foi causado pois o campo estava como TextInput e, quando vazio, dava um erro ao tentar converter para inteiro. Alterando o campo para NumberInput o erro é solucionado.
## Passos para Reproduzir (para bugs)
<!--- Forneça um link para um exemplo, ou um conjunto de passos inequívocos -->
<!--- para reproduzir esse bug. Inclua código para reproduzir, se relevante. -->
1. Criar uma proposição sem número futuro
2. Enviar a proposição
3. Receber a proposição

## Contexto
<!--- Como esse problema o afeta? O que você está tentando realizar? -->
<!--- Fornecer o contexto nos ajuda a encontrar uma solução que seja mais útil no mundo real -->
Afeta o recebimento de proposição.

## Seu Ambiente
<!--- Inclua detalhes relevantes sobre o ambiente em que você presenciou/experienciou o bug. -->
* Versão usada (_Release_): 3.1.144

Erro ao receber proposição
## Comportamento Atual
<!--- Se está descrevendo um bug, conte-nos o que acontece em vez do comportamento esperado. -->
<!--- Se está sugerindo uma mudança/melhoria, explique a diferença com o comportamento atual. -->
Ao receber uma proposição em que o campo "número matéria futuro" não está preenchido ocorre um erro 500.
## Possível Solução
<!--- Não é obrigatório, mas sugira uma possível correção/razão para o bug -->
<!--- ou ideias de como implementar a adição/mudança. -->
O erro foi causado pois o campo estava como TextInput e, quando vazio, dava um erro ao tentar converter para inteiro. Alterando o campo para NumberInput o erro é solucionado.
## Passos para Reproduzir (para bugs)
<!--- Forneça um link para um exemplo, ou um conjunto de passos inequívocos -->
<!--- para reproduzir esse bug. Inclua código para reproduzir, se relevante. -->
1. Criar uma proposição sem número futuro
2. Enviar a proposição
3. Receber a proposição

## Contexto
<!--- Como esse problema o afeta? O que você está tentando realizar? -->
<!--- Fornecer o contexto nos ajuda a encontrar uma solução que seja mais útil no mundo real -->
Afeta o recebimento de proposição.

## Seu Ambiente
<!--- Inclua detalhes relevantes sobre o ambiente em que você presenciou/experienciou o bug. -->
* Versão usada (_Release_): 3.1.144



Discussion:

Resolving patch:
diff --git a/sapl/materia/forms.py b/sapl/materia/forms.py
--- a/sapl/materia/forms.py
+++ b/sapl/materia/forms.py
@@ -1387,7 +1387,7 @@ class ProposicaoForm(FileFieldCheckMixin, forms.ModelForm):
         widget=widgets.HiddenInput(),
         required=False)
 
-    numero_materia_futuro = forms.CharField(
+    numero_materia_futuro = forms.IntegerField(
         label='Número (Opcional)', required=False)
 
     class Meta:
@@ -1700,7 +1700,7 @@ class Meta:
                 attrs={'readonly': 'readonly', 'rows': 4}),
             'data_envio':  widgets.DateTimeInput(
                 attrs={'readonly': 'readonly'}),
-            'numero_materia_futuro': widgets.TextInput(
+            'numero_materia_futuro': widgets.NumberInput(
                 attrs={'readonly': 'readonly', 'rows': 1}),
 
         }
@@ -1741,6 +1741,8 @@ def __init__(self, *args, **kwargs):
         # esta chamada isola o __init__ de ProposicaoForm
         super(ProposicaoForm, self).__init__(*args, **kwargs)
 
+        self.fields['numero_materia_futuro'].widget.attrs['readonly'] = True
+
         fields = [
             Fieldset(
                 _('Dados Básicos'),
@@ -1748,8 +1750,8 @@ def __init__(self, *args, **kwargs):
                     [
                         ('tipo_readonly', 3),
                         ('data_envio', 3),
-                        ('numero_materia_futuro',3),
                         ('autor_readonly', 3),
+                        ('numero_materia_futuro', 3),
                         ('descricao', 12),
                         ('observacao', 12)
                     ]
@@ -1757,6 +1759,11 @@ def __init__(self, *args, **kwargs):
             )
         ]
 
+        if not sapl.base.models.AppConfig.objects.last().escolher_numero_materia_proposicao or \
+           not self.instance.numero_materia_futuro:
+            if 'numero_materia_futuro' in self._meta.fields:
+                del fields[0][0][3]
+
         fields.append(
             Fieldset(
                 _('Vinculado a Matéria Legislativa'),
@@ -1810,7 +1817,7 @@ def __init__(self, *args, **kwargs):
         self.fields['tipo_readonly'].initial = self.instance.tipo.descricao
         self.fields['autor_readonly'].initial = str(self.instance.autor)
         if self.instance.numero_materia_futuro:
-            self.fields['numero_materia_futuro'].initial = self.instance.numero_materia_futuro
+            self.fields['numero_materia_futuro'].initial = self.instance.numero_materia_futuro   
 
         if self.instance.materia_de_vinculo:
             self.fields[


Test patch: