Browse Source

trata form_invalid para conf de receb de proposições

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

18
sapl/materia/forms.py

@ -156,14 +156,14 @@ class MateriaLegislativaForm(ModelForm):
data_origem_externa = cleaned_data['data_origem_externa'] data_origem_externa = cleaned_data['data_origem_externa']
if ano_origem_externa and data_origem_externa and \ if ano_origem_externa and data_origem_externa and \
ano_origem_externa != data_origem_externa.year: ano_origem_externa != data_origem_externa.year:
raise ValidationError("O ano de origem externa da matéria não " raise ValidationError("O ano de origem externa da matéria não "
"pode ser diferente do ano na data de " "pode ser diferente do ano na data de "
"origem externa") "origem externa")
return cleaned_data return cleaned_data
class UnidadeTramitacaoForm(ModelForm): class UnidadeTramitacaoForm(ModelForm):
class Meta: class Meta:
@ -1228,7 +1228,7 @@ class ProposicaoForm(forms.ModelForm):
return inst return inst
class DevolverProposicaoForm(ProposicaoForm): class DevolverProposicaoForm(forms.ModelForm):
justificativa_devolucao = forms.CharField( justificativa_devolucao = forms.CharField(
required=False, widget=widgets.Textarea(attrs={'rows': 5})) required=False, widget=widgets.Textarea(attrs={'rows': 5}))
@ -1242,7 +1242,7 @@ class DevolverProposicaoForm(ProposicaoForm):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
# esta chamada isola o __init__ de ProposicaoForm # esta chamada isola o __init__ de ProposicaoForm
super(ProposicaoForm, self).__init__(*args, **kwargs) super(DevolverProposicaoForm, self).__init__(*args, **kwargs)
fields = [] fields = []
fields.append( fields.append(
@ -1263,15 +1263,6 @@ class DevolverProposicaoForm(ProposicaoForm):
def clean(self): def clean(self):
super(DevolverProposicaoForm, self).clean() 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 cd = self.cleaned_data
if 'justificativa_devolucao' not in cd or\ if 'justificativa_devolucao' not in cd or\
@ -1283,7 +1274,6 @@ class DevolverProposicaoForm(ProposicaoForm):
@transaction.atomic @transaction.atomic
def save(self, commit=False): def save(self, commit=False):
# TODO Implementar workflow entre protocolo e autores
cd = self.cleaned_data cd = self.cleaned_data
self.instance.data_devolucao = timezone.now() 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.contrib.auth.mixins import PermissionRequiredMixin
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse 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 import HttpResponse, JsonResponse
from django.http.response import Http404, HttpResponseRedirect from django.http.response import Http404, HttpResponseRedirect
from django.shortcuts import get_object_or_404, redirect from django.shortcuts import get_object_or_404, redirect
@ -533,6 +535,27 @@ class ConfirmarProposicao(PermissionRequiredForAppCrudMixin, UpdateView):
forms.append(form(**self.get_form_kwargs())) forms.append(form(**self.get_form_kwargs()))
return forms 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): class UnidadeTramitacaoCrud(CrudAux):
model = UnidadeTramitacao model = UnidadeTramitacao
@ -830,7 +853,6 @@ class ReciboProposicaoView(TemplateView):
base64_data = create_barcode(_hash, 100, 200) base64_data = create_barcode(_hash, 100, 200)
barcode = 'data:image/png;base64,{0}'.format(base64_data) barcode = 'data:image/png;base64,{0}'.format(base64_data)
context.update({'proposicao': proposicao, context.update({'proposicao': proposicao,
'hash': _hash, 'hash': _hash,
'barcode': barcode}) 'barcode': barcode})

Loading…
Cancel
Save