diff --git a/parlamentares/urls.py b/parlamentares/urls.py index 11a18e248..f8da1d46f 100644 --- a/parlamentares/urls.py +++ b/parlamentares/urls.py @@ -1,5 +1,7 @@ from django.conf.urls import include, url + from parlamentares.views import (FiliacaoEditView, FiliacaoView, + MandatoEditView, MandatoView, MesaDiretoraView, ParlamentaresCadastroView, ParlamentaresDependentesEditView, ParlamentaresDependentesView, @@ -45,6 +47,12 @@ urlpatterns = [ url(r'^parlamentares/(?P\d+)/filiacao/(?P\d+)$', FiliacaoEditView.as_view(), name='parlamentares_filiacao_edit'), + url(r'^parlamentares/(?P\d+)/mandato$', + MandatoView.as_view(), + name='parlamentares_mandato'), + url(r'^parlamentares/(?P\d+)/mandato/(?P\d+)$', + MandatoEditView.as_view(), + name='parlamentares_mandato_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 e26ba3136..2fcba25e2 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -736,3 +736,138 @@ class FiliacaoEditView(FormMixin, GenericView): 'parlamentar': parlamentar, 'legislatura_id': parlamentar.mandato_set.last( ).legislatura_id}) + + +class MandatoForm(ModelForm): + + class Meta: + model = Mandato + fields = ['legislatura', + 'coligacao', + 'votos_recebidos', + 'data_fim_mandato', + 'data_expedicao_diploma', + 'observacao'] + + def __init__(self, *args, **kwargs): + + row1 = sapl.layout.to_row( + [('legislatura', 4), + ('coligacao', 4), + ('votos_recebidos', 4)]) + + row2 = sapl.layout.to_row( + [('data_fim_mandato', 6), + ('data_expedicao_diploma', 6)]) + + row3 = sapl.layout.to_row( + [('observacao', 12)]) + + self.helper = FormHelper() + self.helper.layout = Layout( + Fieldset('Adicionar Mandato', row1, row2, row3, + ButtonHolder( + Submit('Salvar', 'Salvar', + css_class='button primary'), + )) + + ) + super(MandatoForm, self).__init__( + *args, **kwargs) + + +class MandatoEditForm(MandatoForm): + + def __init__(self, *args, **kwargs): + super(MandatoEditForm, 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 MandatoView(FormMixin, GenericView): + template_name = "parlamentares/parlamentares_mandato.html" + + def get_success_url(self): + pk = self.kwargs['pk'] + return reverse('parlamentares_mandato', kwargs={'pk': pk}) + + def get(self, request, *args, **kwargs): + pid = kwargs['pk'] + parlamentar = Parlamentar.objects.get(id=pid) + mandatos = Mandato.objects.filter( + parlamentar=parlamentar) + + form = MandatoForm() + + return self.render_to_response( + {'parlamentar': parlamentar, + 'mandatos': mandatos, + 'form': form, + 'legislatura_id': parlamentar.mandato_set.last().legislatura.id}) + + def post(self, request, *args, **kwargs): + form = MandatoForm(request.POST) + + if form.is_valid(): + mandato = form.save(commit=False) + + pid = kwargs['pk'] + parlamentar = Parlamentar.objects.get(id=pid) + mandato.parlamentar = parlamentar + + mandato.save() + return self.form_valid(form) + else: + pid = kwargs['pk'] + parlamentar = Parlamentar.objects.get(id=pid) + mandatos = Mandato.objects.filter( + parlamentar=parlamentar) + + return self.render_to_response( + {'parlamentar': parlamentar, + 'mandatos': mandatos, + 'form': form, + 'legislatura_id': parlamentar.mandato_set.last( + ).legislatura.id}) + + +class MandatoEditView(FormMixin, GenericView): + template_name = "parlamentares/parlamentares_mandato_edit.html" + + def get_success_url(self): + pk = self.kwargs['pk'] + return reverse('parlamentares_mandato', kwargs={'pk': pk}) + + def get(self, request, *args, **kwargs): + mandato = Mandato.objects.get(id=kwargs['dk']) + parlamentar = Parlamentar.objects.get(id=kwargs['pk']) + form = MandatoEditForm(instance=mandato) + return self.render_to_response( + {'form': form, + 'parlamentar': parlamentar, + 'legislatura_id': parlamentar.mandato_set.last( + ).legislatura_id}) + + def post(self, request, *args, **kwargs): + mandato = Mandato.objects.get(id=kwargs['dk']) + form = MandatoEditForm(request.POST, instance=mandato) + parlamentar = Parlamentar.objects.get(id=kwargs['pk']) + + if form.is_valid(): + if 'Salvar' in request.POST: + mandato.save() + elif 'Excluir' in request.POST: + mandato.delete() + return self.form_valid(form) + else: + return self.render_to_response( + {'form': form, + 'parlamentar': parlamentar, + 'legislatura_id': parlamentar.mandato_set.last( + ).legislatura_id}) diff --git a/templates/parlamentares/parlamentares_cadastro.html b/templates/parlamentares/parlamentares_cadastro.html index 03c01c9d3..2c5db91a0 100644 --- a/templates/parlamentares/parlamentares_cadastro.html +++ b/templates/parlamentares/parlamentares_cadastro.html @@ -3,10 +3,15 @@ {% load crispy_forms_tags %} {% block sections_nav %} {% endblock sections_nav %} {% block detail_content %} diff --git a/templates/parlamentares/parlamentares_dependentes.html b/templates/parlamentares/parlamentares_dependentes.html index 20b8606dd..525ff9dbd 100644 --- a/templates/parlamentares/parlamentares_dependentes.html +++ b/templates/parlamentares/parlamentares_dependentes.html @@ -3,10 +3,15 @@ {% load crispy_forms_tags %} {% block actions %} {% endblock %} {% block detail_content %} diff --git a/templates/parlamentares/parlamentares_dependentes_edit.html b/templates/parlamentares/parlamentares_dependentes_edit.html index cfe9a7702..05b37468d 100644 --- a/templates/parlamentares/parlamentares_dependentes_edit.html +++ b/templates/parlamentares/parlamentares_dependentes_edit.html @@ -3,10 +3,15 @@ {% load crispy_forms_tags %} {% block actions %} {% endblock %} {% block detail_content %} diff --git a/templates/parlamentares/parlamentares_filiacao.html b/templates/parlamentares/parlamentares_filiacao.html index 60c0a112f..6a4c111fb 100644 --- a/templates/parlamentares/parlamentares_filiacao.html +++ b/templates/parlamentares/parlamentares_filiacao.html @@ -3,10 +3,15 @@ {% load crispy_forms_tags %} {% block actions %} {% endblock %} {% block detail_content %} diff --git a/templates/parlamentares/parlamentares_filiacao_edit.html b/templates/parlamentares/parlamentares_filiacao_edit.html index cfe9a7702..05b37468d 100644 --- a/templates/parlamentares/parlamentares_filiacao_edit.html +++ b/templates/parlamentares/parlamentares_filiacao_edit.html @@ -3,10 +3,15 @@ {% load crispy_forms_tags %} {% block actions %} {% endblock %} {% block detail_content %} diff --git a/templates/parlamentares/parlamentares_mandato.html b/templates/parlamentares/parlamentares_mandato.html new file mode 100644 index 000000000..d06883aa1 --- /dev/null +++ b/templates/parlamentares/parlamentares_mandato.html @@ -0,0 +1,48 @@ +{% extends "crud/detail.html" %} +{% load i18n %} +{% load crispy_forms_tags %} +{% block actions %} + +{% endblock %} +{% block detail_content %} + +Parlamentar: {{ parlamentar.nome_parlamentar }} + +
+ Mandatos + + + + + + + + + + + {% for m in mandatos %} + + + + + + + + + {% endfor %} +
LegislaturaColigaçãoFim MandatoExp. DiplomaNº VotosObservação
{{m.legislatura}}{{m.coligacao}}{{m.data_fim_mandato}}{{m.data_expedicao_diploma}}{{m.votos_recebidos}}{{m.observacao}}
+
+ +{% crispy form %} + +{% endblock detail_content %} diff --git a/templates/parlamentares/parlamentares_mandato_edit.html b/templates/parlamentares/parlamentares_mandato_edit.html new file mode 100644 index 000000000..05b37468d --- /dev/null +++ b/templates/parlamentares/parlamentares_mandato_edit.html @@ -0,0 +1,21 @@ +{% extends "crud/detail.html" %} +{% load i18n %} +{% load crispy_forms_tags %} +{% block actions %} + +{% endblock %} +{% block detail_content %} + +{% crispy form %} + +{% endblock detail_content %}