Browse Source

Refatora mandato para uso do crud

pull/341/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
committed by LeandroRoberto
parent
commit
65399f32a2
  1. 58
      parlamentares/forms.py
  2. 3
      parlamentares/layouts.yaml
  3. 4
      parlamentares/tests/test_parlamentares.py
  4. 11
      parlamentares/urls.py
  5. 76
      parlamentares/views.py
  6. 38
      templates/parlamentares/parlamentar_mandato.html
  7. 7
      templates/parlamentares/parlamentar_mandato_edit.html
  8. 2
      templates/parlamentares/subnav.yaml

58
parlamentares/forms.py

@ -52,64 +52,6 @@ class ParlamentarCreateForm(ParlamentarForm):
return parlamentar return parlamentar
class MandatoForm(ModelForm):
legislatura = forms.ModelChoiceField(
label=_('Legislatura'),
required=True,
queryset=Legislatura.objects.all().order_by('-data_inicio'),
empty_label='----------',
)
class Meta:
model = Mandato
fields = ['legislatura',
'coligacao',
'votos_recebidos',
'data_fim_mandato',
'data_expedicao_diploma',
'tipo_afastamento',
'observacao']
def __init__(self, *args, **kwargs):
row1 = crispy_layout_mixin.to_row(
[('legislatura', 4),
('coligacao', 4),
('votos_recebidos', 4)])
row2 = crispy_layout_mixin.to_row(
[('data_fim_mandato', 6),
('data_expedicao_diploma', 6)])
row3 = crispy_layout_mixin.to_row(
[('tipo_afastamento', 12)])
row4 = crispy_layout_mixin.to_row(
[('observacao', 12)])
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(_('Adicionar Mandato'), row1, row2, row3, row4,
form_actions())
)
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:] = form_actions(more=[
HTML(' '),
Submit('excluir', 'Excluir',
css_class='btn btn-primary')])
class FiliacaoForm(ModelForm): class FiliacaoForm(ModelForm):
class Meta: class Meta:

3
parlamentares/layouts.yaml

@ -69,7 +69,8 @@ Filiacao:
Mandato: Mandato:
Mandato: Mandato:
- legislatura coligacao votos_recebidos - legislatura coligacao votos_recebidos
- ind_titular_FIXME dat_inicio_mandato_FIXME data_fim_mandato data_expedicao_diploma - data_fim_mandato data_expedicao_diploma
- tipo_afastamento
- observacao - observacao
TipoDependente: TipoDependente:

4
parlamentares/tests/test_parlamentares.py

@ -120,7 +120,7 @@ def test_mandato_submit(client):
mommy.make(Parlamentar, pk=14) mommy.make(Parlamentar, pk=14)
mommy.make(Legislatura, pk=5) mommy.make(Legislatura, pk=5)
client.post(reverse('parlamentares:parlamentar_mandato', client.post(reverse('parlamentares:mandato_create',
kwargs={'pk': 14}), kwargs={'pk': 14}),
{'legislatura': 5, {'legislatura': 5,
'data_fim_mandato': '2016-01-01', 'data_fim_mandato': '2016-01-01',
@ -136,7 +136,7 @@ def test_mandato_submit(client):
@pytest.mark.django_db(transaction=False) @pytest.mark.django_db(transaction=False)
def test_form_errors_mandato(client): def test_form_errors_mandato(client):
mommy.make(Parlamentar, pk=14) mommy.make(Parlamentar, pk=14)
response = client.post(reverse('parlamentares:parlamentar_mandato', response = client.post(reverse('parlamentares:mandato_create',
kwargs={'pk': 14}), kwargs={'pk': 14}),
{'legislatura': '', {'legislatura': '',
'salvar': 'salvar'}, 'salvar': 'salvar'},

11
parlamentares/urls.py

@ -2,7 +2,7 @@ from django.conf.urls import include, url
from parlamentares.views import (CargoMesaCrud, ColigacaoCrud, DependenteCrud, from parlamentares.views import (CargoMesaCrud, ColigacaoCrud, DependenteCrud,
FiliacaoEditView, FiliacaoView, FiliacaoEditView, FiliacaoView,
LegislaturaCrud, MandatoEditView, MandatoView, LegislaturaCrud, MandatoCrud,
MesaDiretoraView, NivelInstrucaoCrud, MesaDiretoraView, NivelInstrucaoCrud,
ParlamentarCrud, PartidoCrud, ParlamentarCrud, PartidoCrud,
SessaoLegislativaCrud, TipoAfastamentoCrud, SessaoLegislativaCrud, TipoAfastamentoCrud,
@ -14,7 +14,8 @@ app_name = AppConfig.name
urlpatterns = [ urlpatterns = [
url(r'^parlamentar/', include( url(r'^parlamentar/', include(
ParlamentarCrud.get_urls() + DependenteCrud.get_urls() ParlamentarCrud.get_urls() + DependenteCrud.get_urls() +
MandatoCrud.get_urls()
)), )),
url(r'^sistema/parlamentar/legislatura/', url(r'^sistema/parlamentar/legislatura/',
@ -42,12 +43,6 @@ urlpatterns = [
url(r'^parlamentar/(?P<pk>\d+)/filiacao/(?P<dk>\d+)$', url(r'^parlamentar/(?P<pk>\d+)/filiacao/(?P<dk>\d+)$',
FiliacaoEditView.as_view(), FiliacaoEditView.as_view(),
name='parlamentar_filiacao_edit'), name='parlamentar_filiacao_edit'),
url(r'^parlamentar/(?P<pk>\d+)/mandato$',
MandatoView.as_view(),
name='parlamentar_mandato'),
url(r'^parlamentar/(?P<pk>\d+)/mandato/(?P<dk>\d+)$',
MandatoEditView.as_view(),
name='parlamentar_mandato_edit'),
url(r'^mesa-diretora/$', url(r'^mesa-diretora/$',
MesaDiretoraView.as_view(), name='mesa_diretora'), MesaDiretoraView.as_view(), name='mesa_diretora'),

76
parlamentares/views.py

@ -10,8 +10,8 @@ import crud.base
from crud.base import Crud from crud.base import Crud
from crud.masterdetail import MasterDetailCrud from crud.masterdetail import MasterDetailCrud
from .forms import (FiliacaoEditForm, FiliacaoForm, MandatoEditForm, from .forms import (FiliacaoEditForm, FiliacaoForm, ParlamentarCreateForm,
MandatoForm, ParlamentarCreateForm, ParlamentarForm) ParlamentarForm)
from .models import (CargoMesa, Coligacao, ComposicaoMesa, Dependente, from .models import (CargoMesa, Coligacao, ComposicaoMesa, Dependente,
Filiacao, Legislatura, Mandato, NivelInstrucao, Filiacao, Legislatura, Mandato, NivelInstrucao,
Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar, Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar,
@ -30,6 +30,7 @@ TipoAfastamentoCrud = Crud.build(TipoAfastamento, 'tipo_afastamento')
TipoMilitarCrud = Crud.build(SituacaoMilitar, 'tipo_situa_militar') TipoMilitarCrud = Crud.build(SituacaoMilitar, 'tipo_situa_militar')
DependenteCrud = MasterDetailCrud.build(Dependente, 'parlamentar', '') DependenteCrud = MasterDetailCrud.build(Dependente, 'parlamentar', '')
MandatoCrud = MasterDetailCrud.build(Mandato, 'parlamentar', '')
class ParlamentarCrud(Crud): class ParlamentarCrud(Crud):
@ -348,74 +349,3 @@ class FiliacaoEditView(UpdateView):
filiacao.save() filiacao.save()
return HttpResponseRedirect(self.get_success_url()) return HttpResponseRedirect(self.get_success_url())
class MandatoView(CreateView):
template_name = "parlamentares/parlamentar_mandato.html"
model = Mandato
form_class = MandatoForm
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('parlamentares:parlamentar_mandato',
kwargs={'pk': pk})
def get_context_data(self, **kwargs):
context = super(MandatoView, self).get_context_data(**kwargs)
pid = self.kwargs['pk']
parlamentar = Parlamentar.objects.get(id=pid)
mandatos = Mandato.objects.filter(parlamentar=parlamentar)
if len(parlamentar.mandato_set.all()) == 0:
legislatura_id = 0
else:
legislatura_id = parlamentar.mandato_set.last().legislatura.id
context.update(
{'object': parlamentar,
'mandatos': mandatos,
'legislatura_id': legislatura_id
}
)
return context
def form_valid(self, form):
pid = self.kwargs['pk']
parlamentar = Parlamentar.objects.get(id=pid)
mandato = form.save(commit=False)
mandato.parlamentar = parlamentar
mandato.save()
return HttpResponseRedirect(self.get_success_url())
class MandatoEditView(UpdateView):
template_name = "parlamentares/parlamentar_mandato_edit.html"
model = Mandato
form_class = MandatoEditForm
pk_url_kwarg = 'dk'
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('parlamentares:parlamentar_mandato',
kwargs={'pk': pk})
def get_context_data(self, **kwargs):
context = super(MandatoEditView, self).get_context_data(**kwargs)
parlamentar = Parlamentar.objects.get(id=self.kwargs['pk'])
context.update(
{'object': parlamentar,
'legislatura_id': parlamentar.mandato_set.last(
).legislatura_id})
return context
def form_valid(self, form):
form = self.get_form()
parlamentar = Parlamentar.objects.get(id=self.kwargs['pk'])
if 'salvar' in self.request.POST:
mandato = form.save(commit=False)
mandato.parlamentar = parlamentar
mandato.save()
elif 'excluir' in self.request.POST:
form.instance.delete()
return HttpResponseRedirect(self.get_success_url())

38
templates/parlamentares/parlamentar_mandato.html

@ -1,38 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %}{% endblock %}
{% block detail_content %}
<h2><strong>Parlamentar: </strong>{{ object.nome_parlamentar }}</h2>
<fieldset>
<legend>Mandatos</legend>
<table class="table table-striped table-bordered">
<thead class="thead-default">
<tr>
<th><strong>Legislatura</strong></th>
<th><strong>Coligação</strong></th>
<th><strong>Fim Mandato</strong></th>
<th><strong>Exp. Diploma</strong></th>
<th><strong>Nº Votos</strong></th>
<th><strong>Observação</strong></th>
</tr>
</thead>
{% for m in mandatos %}
<tr>
<td><a href="{% url 'parlamentares:parlamentar_mandato_edit' object.id m.id %}">{{m.legislatura}}</a></td>
<td>{{m.coligacao|default_if_none:""}}</td>
<td>{{m.data_fim_mandato|default_if_none:""}}</td>
<td>{{m.data_expedicao_diploma|default_if_none:""}}</td>
<td>{{m.votos_recebidos|default_if_none:""}}</td>
<td>{{m.observacao|default_if_none:""}}</td>
</tr>
{% endfor %}
</table>
</fieldset>
{% crispy form %}
{% endblock detail_content %}

7
templates/parlamentares/parlamentar_mandato_edit.html

@ -1,7 +0,0 @@
{% extends "crud/detail.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% block actions %}{% endblock %}
{% block detail_content %}
{% crispy form %}
{% endblock detail_content %}

2
templates/parlamentares/subnav.yaml

@ -1,7 +1,7 @@
- title: Início - title: Início
url: parlamentar_detail url: parlamentar_detail
- title: Mandatos - title: Mandatos
url: parlamentar_mandato url: mandato_list
- title: Filiações Partidárias - title: Filiações Partidárias
url: parlamentar_filiacao url: parlamentar_filiacao
- title: Dependentes - title: Dependentes

Loading…
Cancel
Save