From a9caddd72e8dcc850e874c27d131d5c2c34fc7da Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Mon, 9 Nov 2015 15:07:09 -0200 Subject: [PATCH] Add DocumentoAcessorio in Materia --- materia/urls.py | 6 +- materia/views.py | 135 ++++++++++++++++++ templates/materia/documento_acessorio.html | 50 +++++++ .../materia/documento_acessorio_edit.html | 60 ++++++++ templates/materia/materia_detail.html | 2 +- 5 files changed, 251 insertions(+), 2 deletions(-) create mode 100644 templates/materia/documento_acessorio.html create mode 100644 templates/materia/documento_acessorio_edit.html diff --git a/materia/urls.py b/materia/urls.py index 682aa795b..11ee1ed81 100644 --- a/materia/urls.py +++ b/materia/urls.py @@ -1,6 +1,6 @@ from django.conf.urls import include, url - from materia.views import (DespachoInicialEditView, DespachoInicialView, + DocumentoAcessorioEditView, DocumentoAcessorioView, FormularioCadastroView, FormularioSimplificadoView, LegislacaoCitadaEditView, LegislacaoCitadaView, MateriaAnexadaEditView, MateriaAnexadaView, @@ -52,4 +52,8 @@ urlpatterns = [ NumeracaoView.as_view(), name='numeracao'), url(r'^materia/(?P\d+)/numeracao/(?P\d+)/edit', NumeracaoEditView.as_view(), name='numeracao_edit'), + url(r'^materia/(?P\d+)/documento-acessorio$', + DocumentoAcessorioView.as_view(), name='documento_acessorio'), + url(r'^materia/(?P\d+)/documento-acessorio/(?P\d+)/edit', + DocumentoAcessorioEditView.as_view(), name='documento_acessorio_edit'), ] diff --git a/materia/views.py b/materia/views.py index 521300054..f22e31796 100644 --- a/materia/views.py +++ b/materia/views.py @@ -443,6 +443,12 @@ def get_tipos_materia(): for t in TipoMateriaLegislativa.objects.all()] +def get_tipos_documento(): + return [('', 'Selecione')] \ + + [(t.id, t.descricao) + for t in TipoDocumento.objects.all()] + + class MateriaAnexadaForm(forms.Form): tipo = forms.ChoiceField(required=True, @@ -1045,3 +1051,132 @@ class NumeracaoEditView(FormMixin, GenericView): def get_success_url(self): pk = self.kwargs['pk'] return reverse('numeracao', kwargs={'pk': pk}) + + +class DocumentoAcessorioForm(forms.Form): + + tipo = forms.ChoiceField(required=True, + label='Tipo', + choices=get_tipos_documento(), + widget=forms.Select( + attrs={'class': 'selector'})) + + data = forms.DateField(label='Data', + required=False, + input_formats=['%d/%m/%Y'], + widget=forms.TextInput( + attrs={'class': 'dateinput'})) + + nome = forms.CharField( + label='Nome', required=True) + + autor = forms.CharField( + label='Autor', required=True) + + ementa = forms.CharField( + label='Ementa', required=True) + + def __init__(self, *args, **kwargs): + self.helper = FormHelper() + self.helper.layout = Layout( + Fieldset( + 'Incluir Documento Acessório', + 'tipo', + 'data', + 'nome', + 'autor', + 'ementa', + ButtonHolder( + Submit('submit', 'Salvar', + css_class='button primary') + ) + ) + ) + super(DocumentoAcessorioForm, self).__init__(*args, **kwargs) + + +class DocumentoAcessorioView(FormMixin, GenericView): + template_name = "materia/documento_acessorio.html" + + def get(self, request, *args, **kwargs): + materia = MateriaLegislativa.objects.get(id=kwargs['pk']) + docs = DocumentoAcessorio.objects.filter(materia_id=kwargs['pk']) + form = DocumentoAcessorioForm() + + return self.render_to_response( + {'materia': materia, + 'form': form, + 'docs': docs}) + + def post(self, request, *args, **kwargs): + form = DocumentoAcessorioForm(request.POST) + materia = MateriaLegislativa.objects.get(id=kwargs['pk']) + docs_list = DocumentoAcessorio.objects.filter( + materia_id=kwargs['pk']) + + if form.is_valid(): + documento_acessorio = DocumentoAcessorio() + tipo = TipoDocumento.objects.get( + id=form.cleaned_data['tipo']) + + documento_acessorio.materia = materia + documento_acessorio.tipo = tipo + documento_acessorio.data = form.cleaned_data['data'] + documento_acessorio.nome = form.cleaned_data['nome'] + documento_acessorio.autor = form.cleaned_data['autor'] + documento_acessorio.ementa = form.cleaned_data['ementa'] + + documento_acessorio.save() + return self.form_valid(form) + else: + return self.render_to_response({'form': form, + 'materia': materia, + 'docs': docs_list}) + + def get_success_url(self): + pk = self.kwargs['pk'] + return reverse('documento_acessorio', kwargs={'pk': pk}) + + +class DocumentoAcessorioEditView(FormMixin, GenericView): + template_name = "materia/documento_acessorio_edit.html" + + def get(self, request, *args, **kwargs): + materia = MateriaLegislativa.objects.get(id=kwargs['pk']) + documento = DocumentoAcessorio.objects.get(id=kwargs['id']) + form = DocumentoAcessorioForm() + + return self.render_to_response( + {'materia': materia, + 'form': form, + 'doc': documento, + 'tipos': TipoDocumento.objects.all()}) + + def post(self, request, *args, **kwargs): + form = DocumentoAcessorioForm(request.POST) + materia = MateriaLegislativa.objects.get(id=kwargs['pk']) + documento = DocumentoAcessorio.objects.get(id=kwargs['id']) + + if form.is_valid(): + if 'excluir' in request.POST: + documento.delete() + elif 'salvar' in request.POST: + tipo = TipoDocumento.objects.get( + id=form.cleaned_data['tipo']) + documento.materia = materia + documento.tipo = tipo + documento.data = form.cleaned_data['data'] + documento.nome = form.cleaned_data['nome'] + documento.autor = form.cleaned_data['autor'] + documento.ementa = form.cleaned_data['ementa'] + + documento.save() + return self.form_valid(form) + else: + return self.render_to_response({'form': form, + 'materia': materia, + 'doc': documento}) + + def get_success_url(self): + pk = self.kwargs['pk'] + return reverse('documento_acessorio', kwargs={'pk': pk}) diff --git a/templates/materia/documento_acessorio.html b/templates/materia/documento_acessorio.html new file mode 100644 index 000000000..bad6b8b43 --- /dev/null +++ b/templates/materia/documento_acessorio.html @@ -0,0 +1,50 @@ +{% 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}} + +
+ Documentos Acessório + + + + + + + + {% for d in docs %} + + + + + + + {% endfor %} +
NomeTipoDataAutor
{{d.nome}}{{d.tipo.descricao}}{{d.data|date:'d/m/Y'}}{{d.autor}}
+
+ {% crispy form %} +
+{% endblock %} + +{% block foot_js %} + +{% endblock %} \ No newline at end of file diff --git a/templates/materia/documento_acessorio_edit.html b/templates/materia/documento_acessorio_edit.html new file mode 100644 index 000000000..4637e89b5 --- /dev/null +++ b/templates/materia/documento_acessorio_edit.html @@ -0,0 +1,60 @@ +{% 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}} + +
+ Editar Documento Acessório +
+ {% csrf_token %} + + Tipo* + + + Data + + + Nome* + + + Autor* + + + Ementa* + + + + +
+
+
+{% endblock %} + +{% block foot_js %} + +{% endblock %} \ No newline at end of file diff --git a/templates/materia/materia_detail.html b/templates/materia/materia_detail.html index c66551387..10140e11c 100644 --- a/templates/materia/materia_detail.html +++ b/templates/materia/materia_detail.html @@ -6,7 +6,7 @@
{% trans 'Início' %}
{% trans 'Anexada' %}
{% trans 'Autoria' %}
-
{% trans 'Despacho Inicial' %}
+
{% trans 'Despacho Inicial' %}
{% trans 'Documento Acessório' %}
{% trans 'Legislação Citada' %}
{% trans 'Numeração' %}