From 553ff8639a64a8ccdac61cd1150e7ad0ac3b3143 Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Mon, 21 Mar 2016 16:33:42 -0300 Subject: [PATCH] =?UTF-8?q?Conserta=20e=20refatora=20adi=C3=A7=C3=A3o=20de?= =?UTF-8?q?=20autoria=20de=20mat=C3=A9ria=20que=20estava=20dando=20erro=20?= =?UTF-8?q?de=20valida=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- materia/forms.py | 16 +++++++++-- materia/views.py | 73 +++++++++++++++++++----------------------------- 2 files changed, 42 insertions(+), 47 deletions(-) diff --git a/materia/forms.py b/materia/forms.py index 7e29f92b5..2bdee2461 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -1,7 +1,7 @@ from crispy_forms.helper import FormHelper from crispy_forms.layout import HTML, Button, Column, Fieldset, Layout, Submit from django import forms -from django.core.exceptions import ValidationError +from django.core.exceptions import ObjectDoesNotExist, ValidationError from django.forms import ModelForm from django.utils.translation import ugettext_lazy as _ @@ -537,11 +537,23 @@ class AutoriaForm(ModelForm): choices=[(True, _('Sim')), (False, _('Não'))], ) + materia_id = forms.CharField(widget=forms.HiddenInput(), required=False) + class Meta: model = Autoria fields = ['autor', 'primeiro_autor', - 'partido'] + 'partido', + 'materia_id'] + + def clean(self): + materia = MateriaLegislativa.objects.get(id=self.data['materia_id']) + try: + Autoria.objects.get(autor=self.data['autor'], + materia=materia) + raise forms.ValidationError(_('Essa autoria já foi adicionada!')) + except ObjectDoesNotExist: + pass def __init__(self, excluir=False, *args, **kwargs): diff --git a/materia/views.py b/materia/views.py index a096579b1..2077a8719 100644 --- a/materia/views.py +++ b/materia/views.py @@ -1089,58 +1089,41 @@ class AutoriaView(CreateView): template_name = "materia/autoria.html" form_class = AutoriaForm form_valid_message = _('Autoria cadastrada com sucesso!') + model = Autoria - def get(self, request, *args, **kwargs): - materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - autorias = Autoria.objects.filter(materia=materia) - form = AutoriaForm() + def get_initial(self): + initial = super(AutoriaView, self).get_initial() + initial['materia_id'] = self.kwargs['pk'] + return initial - return self.render_to_response( - {'object': materia, - 'form': form, - 'autorias': autorias}) + def get_context_data(self, **kwargs): + context = super(AutoriaView, self).get_context_data(**kwargs) - def post(self, request, *args, **kwargs): - materia = MateriaLegislativa.objects.get(id=kwargs['pk']) + # import ipdb; ipdb.set_trace + materia = MateriaLegislativa.objects.get(id=self.kwargs['pk']) autorias = Autoria.objects.filter(materia=materia) - form = self.get_form() - if 'salvar' in request.POST: - if 'partido' in form.data: - filiacao_autor = Partido.objects.get( - id=form.data['partido']) + context.update({'object': materia, + 'autorias': autorias}) + return context - try: - autoria = Autoria.objects.get( - autor=form.data['autor'], - materia=materia - ) - except ObjectDoesNotExist: - autoria = Autoria() - autoria.autor = Autor.objects.get(id=form.data['autor']) - autoria.materia = materia - primeiro = form.data['primeiro_autor'] - if 'partido' in form.data: - autoria.partido = filiacao_autor - autoria.primeiro_autor = primeiro + def form_valid(self, form): + materia = MateriaLegislativa.objects.get(id=form.data['materia_id']) - autoria.save() - return self.render_to_response( - {'object': materia, - 'form': form, - 'autorias': autorias}) - else: - msg = _('Essa autoria já foi adicionada!') - messages.add_message(request, messages.INFO, msg) - return self.render_to_response( - {'object': materia, - 'form': form, - 'autorias': autorias}) - else: - return self.render_to_response( - {'object': materia, - 'form': form, - 'autorias': autorias}) + if 'salvar' in self.request.POST: + import ipdb; ipdb.set_trace() + autoria = Autoria() + autoria.autor = Autor.objects.get(id=form.data['autor']) + autoria.materia = materia + autoria.primeiro_autor = form.data['primeiro_autor'] + + if form.data['partido']: + filiacao_autor = Partido.objects.get(id=form.data['partido']) + autoria.partido = filiacao_autor + + autoria.save() + + return redirect(self.get_success_url()) def get_success_url(self): pk = self.kwargs['pk']