From 453e934ad35b060a214fd8785e5c98be0b936a2b Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Thu, 12 Nov 2015 17:33:13 -0200 Subject: [PATCH] Add form to Autoria in MateriaLegislativa --- materia/urls.py | 13 +++-- materia/views.py | 84 +++++++++++++++++++++++++++ templates/materia/autoria.html | 79 +++++++++++++++++++++++++ templates/materia/materia_detail.html | 2 +- 4 files changed, 173 insertions(+), 5 deletions(-) create mode 100644 templates/materia/autoria.html diff --git a/materia/urls.py b/materia/urls.py index c6be58a32..0185406e2 100644 --- a/materia/urls.py +++ b/materia/urls.py @@ -1,8 +1,8 @@ from django.conf.urls import include, url - -from materia.views import (DespachoInicialEditView, DespachoInicialView, - DocumentoAcessorioEditView, DocumentoAcessorioView, - FormularioCadastroView, FormularioSimplificadoView, +from materia.views import (AutoriaView, DespachoInicialEditView, + DespachoInicialView, DocumentoAcessorioEditView, + DocumentoAcessorioView, FormularioCadastroView, + FormularioSimplificadoView, LegislacaoCitadaEditView, LegislacaoCitadaView, MateriaAnexadaEditView, MateriaAnexadaView, NumeracaoEditView, NumeracaoView, RelatoriaView, @@ -64,4 +64,9 @@ urlpatterns = [ TramitacaoView.as_view(), name='tramitacao_materia'), url(r'^materia/(?P\d+)/tramitacao/(?P\d+)/edit$', TramitacaoEditView.as_view(), name='tramitacao_edit'), +<<<<<<< HEAD +======= + url(r'^materia/(?P\d+)/autoria$', + AutoriaView.as_view(), name='autoria'), +>>>>>>> Add form to Autoria in MateriaLegislativa ] diff --git a/materia/views.py b/materia/views.py index 4a066ce28..291fc051b 100644 --- a/materia/views.py +++ b/materia/views.py @@ -1291,8 +1291,13 @@ class TramitacaoView(FormMixin, GenericView): {'form': form, 'materia': materia, 'tramitacoes': tramitacoes_list, +<<<<<<< HEAD 'error': 'A origem da nova tramitação \ deve ser igual ao destino da última adicionada!'}) +======= + 'error': 'A origem da nova tramitação\ + deve ser igual ao destino da última adicionada!'}) +>>>>>>> Add form to Autoria in MateriaLegislativa return self.form_valid(form) else: return self.render_to_response({'form': form, @@ -1354,3 +1359,82 @@ class TramitacaoEditView(FormMixin, GenericView): def get_success_url(self): pk = self.kwargs['pk'] return reverse('tramitacao_materia', kwargs={'pk': pk}) + + +class AutoriaForm(forms.Form): + tipo_autor = forms.CharField() + nome_autor = forms.CharField() + primeiro_autor = forms.CharField() + + +class AutoriaView(GenericView): + template_name = "materia/autoria.html" + + def get(self, request, *args, **kwargs): + materia = MateriaLegislativa.objects.get(id=kwargs['pk']) + autorias = Autoria.objects.filter(materia=materia) + form = AutoriaForm() + + return self.render_to_response( + {'materia': materia, + 'form': form, + 'autorias': autorias, + 'tipo_autores': TipoAutor.objects.all(), + 'autores': Autor.objects.all(), + 'tipo_autor_id': TipoAutor.objects.first().id}) + + def post(self, request, *args, **kwargs): + materia = MateriaLegislativa.objects.get(id=kwargs['pk']) + autorias = Autoria.objects.filter(materia=materia) + form = AutoriaForm(request.POST) + + 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'])) + + try: + autoria = Autoria.objects.get( + autor=autor, + materia=materia + ) + except ObjectDoesNotExist: + + autoria = Autoria() + autoria.autor = autor + autoria.materia = materia + autoria.primeiro_autor = primeiro + autoria.save() + + return self.render_to_response( + {'materia': materia, + 'form': form, + 'autorias': autorias, + 'tipo_autores': TipoAutor.objects.all(), + 'autores': Autor.objects.all(), + 'tipo_autor_id': int(form.data['tipo_autor'])}) + else: + return self.render_to_response( + {'materia': materia, + 'form': form, + 'autorias': autorias, + 'tipo_autores': TipoAutor.objects.all(), + 'autores': Autor.objects.all(), + 'tipo_autor_id': int(form.data['tipo_autor']), + 'error': 'Essa autoria já foi adicionada!'}) + else: + return self.render_to_response( + {'materia': materia, + 'form': form, + 'autorias': autorias, + 'tipo_autores': TipoAutor.objects.all(), + 'autores': Autor.objects.all(), + 'tipo_autor_id': int(form.data['tipo_autor'])}) + + def get_success_url(self): + pk = self.kwargs['pk'] + return reverse('autoria', kwargs={'pk': pk}) diff --git a/templates/materia/autoria.html b/templates/materia/autoria.html new file mode 100644 index 000000000..a35b7668f --- /dev/null +++ b/templates/materia/autoria.html @@ -0,0 +1,79 @@ +{% extends "materia/materia_detail.html" %} +{% load i18n %} +{% load crispy_forms_tags %} + +{% block detail_content %} +
+ Matéria Legislativa +
    +
  • Tipo: {{materia.tipo.sigla}}
  • +
  • Número: {{materia.numero}}
  • +
  • Ano: {{materia.ano}}
  • +
+ Ementa: {{materia.ementa}} + +
+ Autorias + + + + + + + {% for a in autorias %} + + + + + + {% endfor %} +
Nome AutorTipo AutorPrimeiro Autor
{{a.autor}}{{a.autor.tipo.descricao}}{{a.primeiro_autor|yesno:"Sim,Não"}}
+
+ +
+ Adicionar Autoria + {% if error %}
{{ error }}
{% endif %} + +
    +
  • Tipo do Autor
  • +
  • Nome Autor
  • +
  • Primeiro Autor
  • +
+
+ {% csrf_token %} + +
    +
  • + +
  • + +
  • + +
  • + +
  • + +
  • +
+ +
+
+
+{% endblock %} \ No newline at end of file diff --git a/templates/materia/materia_detail.html b/templates/materia/materia_detail.html index c58c80330..9f708b959 100644 --- a/templates/materia/materia_detail.html +++ b/templates/materia/materia_detail.html @@ -5,7 +5,7 @@