Browse Source

trata form_invalid para conf de receb de proposições

pull/1650/head
LeandroRoberto 7 years ago
parent
commit
bd504987ba
  1. 16
      sapl/materia/forms.py
  2. 24
      sapl/materia/views.py

16
sapl/materia/forms.py

@ -161,9 +161,9 @@ class MateriaLegislativaForm(ModelForm):
"pode ser diferente do ano na data de "
"origem externa")
return cleaned_data
class UnidadeTramitacaoForm(ModelForm):
class Meta:
@ -1228,7 +1228,7 @@ class ProposicaoForm(forms.ModelForm):
return inst
class DevolverProposicaoForm(ProposicaoForm):
class DevolverProposicaoForm(forms.ModelForm):
justificativa_devolucao = forms.CharField(
required=False, widget=widgets.Textarea(attrs={'rows': 5}))
@ -1242,7 +1242,7 @@ class DevolverProposicaoForm(ProposicaoForm):
def __init__(self, *args, **kwargs):
# esta chamada isola o __init__ de ProposicaoForm
super(ProposicaoForm, self).__init__(*args, **kwargs)
super(DevolverProposicaoForm, self).__init__(*args, **kwargs)
fields = []
fields.append(
@ -1263,15 +1263,6 @@ class DevolverProposicaoForm(ProposicaoForm):
def clean(self):
super(DevolverProposicaoForm, self).clean()
numeracao = sapl.base.models.AppConfig.attr('sequencia_numeracao')
if not numeracao:
raise ValidationError("A sequência de numeração (por ano ou geral)"
" não foi configurada para a aplicação em "
"tabelas auxiliares")
cd = ProposicaoForm.clean(self)
cd = self.cleaned_data
if 'justificativa_devolucao' not in cd or\
@ -1283,7 +1274,6 @@ class DevolverProposicaoForm(ProposicaoForm):
@transaction.atomic
def save(self, commit=False):
# TODO Implementar workflow entre protocolo e autores
cd = self.cleaned_data
self.instance.data_devolucao = timezone.now()

24
sapl/materia/views.py

@ -9,6 +9,8 @@ from django.contrib.auth.decorators import permission_required
from django.contrib.auth.mixins import PermissionRequiredMixin
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
from django.forms.forms import Form
from django.forms.utils import ErrorDict
from django.http import HttpResponse, JsonResponse
from django.http.response import Http404, HttpResponseRedirect
from django.shortcuts import get_object_or_404, redirect
@ -533,6 +535,27 @@ class ConfirmarProposicao(PermissionRequiredForAppCrudMixin, UpdateView):
forms.append(form(**self.get_form_kwargs()))
return forms
def form_invalid(self, form):
# Só um form é enviado por vez mas podem existir invalidade em ambos.
# em caso de um form ser inválido e retornar para a tela dos
# formulários, o outro precisa ser renderizado, mas neste ponto por ser
# um POST só chega um form dada lógica no método acima get_form,
# assim o form_invalid cria o form alternativo e o insere para
# renderização do template_name definido nesta classe
kwargs = {
'initial': self.get_initial(),
'prefix': self.get_prefix(),
'instance': form.instance
}
if isinstance(form, self.form_class[0]):
forms = [form, DevolverProposicaoForm(**kwargs)]
else:
forms = [ConfirmarProposicaoForm(**kwargs), form]
return self.render_to_response(self.get_context_data(form=forms))
class UnidadeTramitacaoCrud(CrudAux):
model = UnidadeTramitacao
@ -830,7 +853,6 @@ class ReciboProposicaoView(TemplateView):
base64_data = create_barcode(_hash, 100, 200)
barcode = 'data:image/png;base64,{0}'.format(base64_data)
context.update({'proposicao': proposicao,
'hash': _hash,
'barcode': barcode})

Loading…
Cancel
Save