diff --git a/parlamentares/urls.py b/parlamentares/urls.py index 75010b2ee..c89db705e 100644 --- a/parlamentares/urls.py +++ b/parlamentares/urls.py @@ -1,8 +1,8 @@ from django.conf.urls import include, url - from parlamentares.views import (MesaDiretoraView, ParlamentaresCadastroView, - ParlamentaresEditarView, ParlamentaresView, + ParlamentaresDependentesEditView, ParlamentaresDependentesView, + ParlamentaresEditarView, ParlamentaresView, cargo_mesa_crud, coligacao_crud, legislatura_crud, nivel_instrucao_crud, partido_crud, sessao_legislativa_crud, @@ -34,6 +34,9 @@ urlpatterns = [ ParlamentaresCadastroView.as_view(), name='parlamentares_cadastro'), url(r'^parlamentares/(?P\d+)/dependentes$', ParlamentaresDependentesView.as_view(), name='parlamentares_dependentes'), + url(r'^parlamentares/(?P\d+)/dependentes/(?P\d+)$', + ParlamentaresDependentesEditView.as_view(), name='parlamentares_dependentes_edit'), + url(r'^parlamentares/(?P\d+)/(?P\d+)/editar$', ParlamentaresEditarView.as_view(), name='parlamentares_editar'), diff --git a/parlamentares/views.py b/parlamentares/views.py index 2131b5a9e..4b2e5d267 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -348,9 +348,9 @@ class ParlamentaresEditarView(FormMixin, GenericView): pk = kwargs['pk'] pid = kwargs['pid'] parlamentar = Parlamentar.objects.get(id=pid) - form = ParlamentaresEditForm(instance=parlamentar) - return self.render_to_response({'form': form, 'legislatura_id': pk}) + return self.render_to_response( + {'form': form, 'legislatura_id': pk, 'parlamentar': parlamentar}) def post(self, request, *args, **kwargs): pk = kwargs['pk'] @@ -396,8 +396,8 @@ class DependenteForm(ModelForm): row2 = sapl.layout.to_row( [('tipo', 4), - ('sexo', 4), - ('data_nascimento', 4)]) + ('sexo', 4), + ('data_nascimento', 4)]) row3 = sapl.layout.to_row( [('cpf', 4), @@ -409,33 +409,98 @@ class DependenteForm(ModelForm): Fieldset('Cadastro de Dependentes', row1, row2, row3, ButtonHolder( - Submit('submit', 'Salvar', + Submit('Salvar', 'Salvar', css_class='button primary'), )) ) super(DependenteForm, self).__init__( - *args, **kwargs) + *args, **kwargs) + + +class DependenteEditForm(DependenteForm): + + def __init__(self, *args, **kwargs): + super(DependenteEditForm, self).__init__( + *args, **kwargs) + + self.helper.layout[0][-1:] = ButtonHolder( + Submit('Salvar', 'Salvar', + css_class='button primary'), + HTML(' '), + Submit('Excluir', 'Excluir', + css_class='button primary'),) + class ParlamentaresDependentesView(FormMixin, GenericView): - template_name = "parlamentares/parlamentares_dependentes.html" + template_name = "parlamentares/parlamentares_dependentes.html" - def get_success_url(self): - return reverse('parlamentares_dependentes') + def get_success_url(self): + pk = self.kwargs['pk'] + return reverse('parlamentares_dependentes', kwargs={'pk': pk}) - def get(self, request, *args, **kwargs): - - pid = kwargs['pk'] - parlamentar = Parlamentar.objects.get(id=pid) - dependentes = Dependente.objects.filter(parlamentar = parlamentar).order_by('nome', 'tipo') + def get(self, request, *args, **kwargs): + + pid = kwargs['pk'] + parlamentar = Parlamentar.objects.get(id=pid) + dependentes = Dependente.objects.filter( + parlamentar=parlamentar).order_by('nome', 'tipo') - form = DependenteForm() + form = DependenteForm() - return self.render_to_response({'parlamentar': parlamentar, - 'dependentes': dependentes, - 'form': form}) + return self.render_to_response({'parlamentar': parlamentar, + 'dependentes': dependentes, + 'form': form}) + def post(self, request, *args, **kwargs): + form = DependenteForm(request.POST) + + if form.is_valid(): + dependente = form.save(commit=False) + + pid = kwargs['pk'] + parlamentar = Parlamentar.objects.get(id=pid) + dependente.parlamentar = parlamentar + + dependente.save() + return self.form_valid(form) + else: + pid = kwargs['pk'] + parlamentar = Parlamentar.objects.get(id=pid) + dependentes = Dependente.objects.filter( + parlamentar=parlamentar).order_by('nome', 'tipo') + + return self.render_to_response({'parlamentar': parlamentar, + 'dependentes': dependentes, + 'form': form}) + + +class ParlamentaresDependentesEditView(FormMixin, GenericView): + template_name = "parlamentares/parlamentares_dependentes_edit.html" + + def get_success_url(self): + pk = self.kwargs['pk'] + return reverse('parlamentares_dependentes', kwargs={'pk': pk}) + + def get(self, request, *args, **kwargs): + dependente = Dependente.objects.get(id=kwargs['dk']) + form = DependenteEditForm(instance=dependente) + return self.render_to_response({'form': form}) + + def post(self, request, *args, **kwargs): + dependente = Dependente.objects.get(id=kwargs['dk']) + form = DependenteEditForm(request.POST, instance=dependente) + + if form.is_valid(): + if 'Salvar' in request.POST: + dependente.save() + elif 'Excluir' in request.POST: + dependente.delete() + return self.form_valid(form) + else: + return self.render_to_response( + {'form': form}) class MesaDiretoraForm(forms.Form): diff --git a/templates/parlamentares/parlamentares_cadastro.html b/templates/parlamentares/parlamentares_cadastro.html index dfb598756..d278c790e 100644 --- a/templates/parlamentares/parlamentares_cadastro.html +++ b/templates/parlamentares/parlamentares_cadastro.html @@ -5,7 +5,7 @@ {% endblock sections_nav %} {% block detail_content %} diff --git a/templates/parlamentares/parlamentares_dependentes.html b/templates/parlamentares/parlamentares_dependentes.html index a38928142..a0fa8c98f 100644 --- a/templates/parlamentares/parlamentares_dependentes.html +++ b/templates/parlamentares/parlamentares_dependentes.html @@ -1,31 +1,30 @@ {% extends "crud/detail.html" %} {% load i18n %} {% load crispy_forms_tags %} - +{% block actions %}{% endblock %} {% block detail_content %} - -{{ parlamentar.nome_parlamentar }} +Parlamentar: {{ parlamentar.nome_parlamentar }}
Dependentes - -
    -
  • Nome Dependente
  • -
  • Tipo
  • -
  • Data de Nascimento
  • -
- {% for d in dependentes %} -
    -
  • {{d.nome}}
  • -
  • {{d.tipo }}
  • -
  • {{d.data_nascimento}}
  • -
  • Editar Excluir
  • -
- {% endfor %} + + + + + + + + {% for d in dependentes %} + + + + + + {% endfor %} +
Nome DependenteTipoData de Nascimento
{{d.nome}}{{d.tipo }}{{d.data_nascimento}}
{% crispy form %} - {% endblock detail_content %} diff --git a/templates/parlamentares/parlamentares_dependentes_edit.html b/templates/parlamentares/parlamentares_dependentes_edit.html new file mode 100644 index 000000000..1872dd084 --- /dev/null +++ b/templates/parlamentares/parlamentares_dependentes_edit.html @@ -0,0 +1,9 @@ +{% extends "crud/detail.html" %} +{% load i18n %} +{% load crispy_forms_tags %} +{% block actions %}{% endblock %} +{% block detail_content %} + +{% crispy form %} + +{% endblock detail_content %}