From 987234c08d4eb11f07d9e3ae0c2804691109aace Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Tue, 8 Mar 2016 11:37:47 -0300 Subject: [PATCH] Refatora tela de autorias --- materia/forms.py | 48 +++++++++--- materia/views.py | 109 ++++++++-------------------- templates/materia/autoria.html | 61 +--------------- templates/materia/autoria_edit.html | 64 +--------------- 4 files changed, 71 insertions(+), 211 deletions(-) diff --git a/materia/forms.py b/materia/forms.py index 5450b3b07..3e9ce7762 100644 --- a/materia/forms.py +++ b/materia/forms.py @@ -12,7 +12,7 @@ from crispy_layout_mixin import form_actions from norma.models import LegislacaoCitada, TipoNormaJuridica from parlamentares.models import Parlamentar, Partido -from .models import (AcompanhamentoMateria, Anexada, Autor, DespachoInicial, +from .models import (AcompanhamentoMateria, Anexada, Autor, Autoria, DespachoInicial, DocumentoAcessorio, MateriaLegislativa, Numeracao, Origem, Proposicao, Relatoria, StatusTramitacao, TipoAutor, TipoDocumento, TipoMateriaLegislativa, Tramitacao, @@ -615,15 +615,43 @@ class FormularioCadastroForm(ModelForm): super(FormularioCadastroForm, self).__init__(*args, **kwargs) -class AutoriaForm(forms.Form): - tipo_autor = forms.CharField() - nome_autor = forms.CharField() - primeiro_autor = forms.CharField() - partido_autor = forms.ModelChoiceField( - label=_('Partido (Autor)'), - required=False, - queryset=Partido.objects.all(), - empty_label='Selecione') +class AutoriaForm(ModelForm): + autor = forms.ModelChoiceField( + label=_('Autor'), + required=True, + queryset=Autor.objects.all().order_by('tipo', 'nome'), + ) + primeiro_autor = forms.ChoiceField( + label=_('Primeiro Autor'), + required=True, + choices=[(True, _('Sim')), (False, _('Não'))], + ) + + class Meta: + model = Autoria + fields = ['autor', + 'primeiro_autor', + 'partido'] + + def __init__(self, excluir=False, *args, **kwargs): + + row1 = crispy_layout_mixin.to_row( + [('autor', 4), ('primeiro_autor', 4), ('partido', 4)]) + + more = [] + if excluir: + more = [Submit('Excluir', 'Excluir')] + + self.helper = FormHelper() + self.helper.layout = Layout( + Fieldset( + _('Adicionar Autoria'), + row1, + form_actions(more=more) + ) + ) + super(AutoriaForm, self).__init__( + *args, **kwargs) class MateriaLegislativaPesquisaForm(forms.Form): diff --git a/materia/views.py b/materia/views.py index 014bb0c2c..e3b05c22b 100644 --- a/materia/views.py +++ b/materia/views.py @@ -1125,8 +1125,9 @@ class TramitacaoEditView(FormMixin, GenericView): return reverse('tramitacao_materia', kwargs={'pk': pk}) -class AutoriaView(GenericView): +class AutoriaView(CreateView): template_name = "materia/autoria.html" + form_class = AutoriaForm def get(self, request, *args, **kwargs): materia = MateriaLegislativa.objects.get(id=kwargs['pk']) @@ -1135,139 +1136,89 @@ class AutoriaView(GenericView): return self.render_to_response( {'object': materia, - 'form': form, - 'autorias': autorias, - 'partido_autor': Partido.objects.all(), - 'tipo_autores': TipoAutor.objects.all(), - 'autores': Autor.objects.all(), - 'tipo_autor_id': TipoAutor.objects.first().id}) + 'form': AutoriaForm, + 'autorias': autorias}) def post(self, request, *args, **kwargs): materia = MateriaLegislativa.objects.get(id=kwargs['pk']) autorias = Autoria.objects.filter(materia=materia) - form = AutoriaForm(request.POST) + form = self.get_form() if 'salvar' in request.POST: - if int(form.data['primeiro_autor']) == 1: - primeiro = True - else: - primeiro = False - - autor = Autor.objects.get( - id=int(form.data['nome_autor'])) - - if 'partido_autor' in form.data: + if 'partido' in form.data: filiacao_autor = Partido.objects.get( - sigla=form.data['partido_autor']) + id=form.data['partido']) try: autoria = Autoria.objects.get( - autor=autor, + autor=form.data['autor'], materia=materia ) except ObjectDoesNotExist: autoria = Autoria() - autoria.autor = autor + autoria.autor = Autor.objects.get(id=form.data['autor']) autoria.materia = materia - if 'partido_autor' in form.data: + primeiro = form.data['primeiro_autor'] + if 'partido' in form.data: autoria.partido = filiacao_autor autoria.primeiro_autor = primeiro autoria.save() - return self.render_to_response( {'object': materia, 'form': form, - 'autorias': autorias, - 'partido_autor': Partido.objects.all(), - 'tipo_autores': TipoAutor.objects.all(), - 'autores': Autor.objects.all(), - 'tipo_autor_id': int(form.data['tipo_autor'])}) + '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, - 'tipo_autores': TipoAutor.objects.all(), - 'autores': Autor.objects.all(), - 'tipo_autor_id': int(form.data['tipo_autor'])}) + 'autorias': autorias}) else: return self.render_to_response( {'object': materia, 'form': form, - 'autorias': autorias, - 'partido_autor': Partido.objects.all(), - 'tipo_autores': TipoAutor.objects.all(), - 'autores': Autor.objects.all(), - 'tipo_autor_id': int(form.data['tipo_autor'])}) + 'autorias': autorias}) def get_success_url(self): pk = self.kwargs['pk'] return reverse('autoria', kwargs={'pk': pk}) -class AutoriaEditView(GenericView, FormMixin): +class AutoriaEditView(CreateView): template_name = "materia/autoria_edit.html" + form_class = AutoriaForm def get(self, request, *args, **kwargs): materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - autorias = Autoria.objects.filter(materia=materia) - autor = Autor.objects.get(id=self.kwargs['id']) - form = AutoriaForm() + autoria = Autoria.objects.get(id=self.kwargs['id']) + form = AutoriaForm(instance=autoria, excluir=True) return self.render_to_response( {'object': materia, - 'form': form, - 'autorias': autorias, - 'tipo_autores': TipoAutor.objects.all(), - 'partido': Partido.objects.all(), - 'autores': Autor.objects.all(), - 'tipo_autor_id': autor.tipo.id, - 'autor_id': autor.id}) + 'form': form}) def post(self, request, *args, **kwargs): materia = MateriaLegislativa.objects.get(id=kwargs['pk']) - autorias = Autoria.objects.filter(materia=materia) - form = AutoriaForm(request.POST) - + form = self.get_form() if form.is_valid(): - if int(form.data['primeiro_autor']) == 1: - primeiro = True - else: - primeiro = False - - autor = Autor.objects.get( - id=int(form.data['nome_autor'])) - - if 'partido_autor' in form.data: - filiacao_autor = Partido.objects.get( - sigla=form.data['partido']) - - autoria = Autoria.objects.get(materia=materia, autor__id=autor.id) - autoria.autor = autor - if 'partido_autor' in form.data: - autoria.partido = filiacao_autor - autoria.materia = materia - autoria.primeiro_autor = primeiro - + autoria = Autoria.objects.get(id=self.kwargs['id']) if 'salvar' in request.POST: + autoria.autor = Autor.objects.get(id=form.data['autor']) + autoria.primeiro_autor = form.data['primeiro_autor'] + if 'partido' in form.data: + autoria.partido = Partido.objects.get( + id=form.data['partido']) + autoria.materia = materia autoria.save() - elif 'excluir' in request.POST: + elif 'Excluir' in request.POST: autoria.delete() - - return self.form_valid(form) - + return redirect(self.get_success_url()) else: return self.render_to_response( {'object': materia, - 'form': form, - 'autorias': autorias, - 'partido': Partido.objects.all(), - 'tipo_autores': TipoAutor.objects.all(), - 'autores': Autor.objects.all(), - 'tipo_autor_id': int(form.data['tipo_autor'])}) + 'form': form}) def get_success_url(self): pk = self.kwargs['pk'] diff --git a/templates/materia/autoria.html b/templates/materia/autoria.html index 010831281..d90febf81 100644 --- a/templates/materia/autoria.html +++ b/templates/materia/autoria.html @@ -20,7 +20,7 @@ {% for a in autorias %} - {{a.autor}} + {{a.autor}} {{a.autor.tipo.descricao}} {{a.primeiro_autor|yesno:"Sim,Não"}} {{a.partido.sigla|default_if_none:"Não Informado"}} @@ -28,63 +28,6 @@ {% endfor %} - -
- Adicionar Autoria -
-
Tipo do Autor
-
Nome Autor
-
Primeiro Autor
-
Partido Autor
-
-
- {% csrf_token %} - -
-
- -
- -
- -
- -
- -
- -
- -
-
-
- -
-
+ {% crispy form %} {% endblock %} diff --git a/templates/materia/autoria_edit.html b/templates/materia/autoria_edit.html index f26bd89cf..683f9f8ca 100644 --- a/templates/materia/autoria_edit.html +++ b/templates/materia/autoria_edit.html @@ -3,67 +3,5 @@ {% load crispy_forms_tags %} {% block actions %} {% endblock %} {% block detail_content %} -
- Matéria Legislativa - {% include "materia/resumo_detail_materia.html" %} - -
- Editar Autoria -
-
Tipo do Autor
-
Nome Autor
-
Primeiro Autor
-
Partido
-
-
- {% csrf_token %} - -
-
- -
- -
- -
- -
- -
- -
- -
-
-
- - -
-
-
+ {% crispy form %} {% endblock %}