Browse Source

Conserta e refatora adição de autoria de matéria que estava dando erro de validação

pull/285/head
Edward Ribeiro 9 years ago
parent
commit
553ff8639a
  1. 16
      materia/forms.py
  2. 73
      materia/views.py

16
materia/forms.py

@ -1,7 +1,7 @@
from crispy_forms.helper import FormHelper from crispy_forms.helper import FormHelper
from crispy_forms.layout import HTML, Button, Column, Fieldset, Layout, Submit from crispy_forms.layout import HTML, Button, Column, Fieldset, Layout, Submit
from django import forms from django import forms
from django.core.exceptions import ValidationError from django.core.exceptions import ObjectDoesNotExist, ValidationError
from django.forms import ModelForm from django.forms import ModelForm
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -537,11 +537,23 @@ class AutoriaForm(ModelForm):
choices=[(True, _('Sim')), (False, _('Não'))], choices=[(True, _('Sim')), (False, _('Não'))],
) )
materia_id = forms.CharField(widget=forms.HiddenInput(), required=False)
class Meta: class Meta:
model = Autoria model = Autoria
fields = ['autor', fields = ['autor',
'primeiro_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): def __init__(self, excluir=False, *args, **kwargs):

73
materia/views.py

@ -1089,58 +1089,41 @@ class AutoriaView(CreateView):
template_name = "materia/autoria.html" template_name = "materia/autoria.html"
form_class = AutoriaForm form_class = AutoriaForm
form_valid_message = _('Autoria cadastrada com sucesso!') form_valid_message = _('Autoria cadastrada com sucesso!')
model = Autoria
def get(self, request, *args, **kwargs): def get_initial(self):
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) initial = super(AutoriaView, self).get_initial()
autorias = Autoria.objects.filter(materia=materia) initial['materia_id'] = self.kwargs['pk']
form = AutoriaForm() return initial
return self.render_to_response( def get_context_data(self, **kwargs):
{'object': materia, context = super(AutoriaView, self).get_context_data(**kwargs)
'form': form,
'autorias': autorias})
def post(self, request, *args, **kwargs): # import ipdb; ipdb.set_trace
materia = MateriaLegislativa.objects.get(id=kwargs['pk']) materia = MateriaLegislativa.objects.get(id=self.kwargs['pk'])
autorias = Autoria.objects.filter(materia=materia) autorias = Autoria.objects.filter(materia=materia)
form = self.get_form()
if 'salvar' in request.POST: context.update({'object': materia,
if 'partido' in form.data: 'autorias': autorias})
filiacao_autor = Partido.objects.get( return context
id=form.data['partido'])
try: def form_valid(self, form):
autoria = Autoria.objects.get( materia = MateriaLegislativa.objects.get(id=form.data['materia_id'])
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
autoria.save() if 'salvar' in self.request.POST:
return self.render_to_response( import ipdb; ipdb.set_trace()
{'object': materia, autoria = Autoria()
'form': form, autoria.autor = Autor.objects.get(id=form.data['autor'])
'autorias': autorias}) autoria.materia = materia
else: autoria.primeiro_autor = form.data['primeiro_autor']
msg = _('Essa autoria já foi adicionada!')
messages.add_message(request, messages.INFO, msg) if form.data['partido']:
return self.render_to_response( filiacao_autor = Partido.objects.get(id=form.data['partido'])
{'object': materia, autoria.partido = filiacao_autor
'form': form,
'autorias': autorias}) autoria.save()
else:
return self.render_to_response( return redirect(self.get_success_url())
{'object': materia,
'form': form,
'autorias': autorias})
def get_success_url(self): def get_success_url(self):
pk = self.kwargs['pk'] pk = self.kwargs['pk']

Loading…
Cancel
Save