Browse Source

Merge ba2b88b564 into 7814cb0d8e

pull/334/merge
Eduardo Edson Batista Cordeiro Alves 10 years ago
parent
commit
25dbf2d80f
  1. 15
      base/templatetags/menus.py
  2. 2
      comissoes/views.py
  3. 47
      crud/base.py
  4. 81
      crud/masterdetail.py
  5. 5
      crud/tests/stub_app/models.py
  6. 5
      crud/tests/stub_app/urls.py
  7. 8
      crud/tests/stub_app/views.py
  8. 14
      crud/tests/test_masterdetail.py
  9. 2
      materia/views.py
  10. 2
      norma/views.py
  11. 110
      parlamentares/forms.py
  12. 3
      parlamentares/layouts.yaml
  13. 8
      parlamentares/test_parlamentares.py
  14. 25
      parlamentares/urls.py
  15. 149
      parlamentares/views.py
  16. 4
      sessao/views.py
  17. 32
      templates/parlamentares/parlamentar_dependente.html
  18. 7
      templates/parlamentares/parlamentar_dependente_edit.html
  19. 38
      templates/parlamentares/parlamentar_mandato.html
  20. 7
      templates/parlamentares/parlamentar_mandato_edit.html
  21. 4
      templates/parlamentares/subnav.yaml

15
base/templatetags/menus.py

@ -19,15 +19,20 @@ def subnav(context, path=None):
# TODO: 118n !!!!!!!!!!!!!!
# How to internationalize yaml files????
menu = None
if 'object' in context:
obj = context['object']
app = obj.__class__._meta.app_label
root_pk = context.get('root_pk', None)
if not root_pk:
obj = context.get('object', None)
if obj:
root_pk = obj.pk
if root_pk:
request = context['request']
app = request.resolver_match.app_name
default_path = '%s/subnav.yaml' % app
path = os.path.join(TEMPLATES_DIR, path or default_path)
if os.path.exists(path):
menu = yaml.load(open(path, 'r'))
resolve_urls_inplace(menu, obj.pk, app)
return dict(menu=menu)
resolve_urls_inplace(menu, root_pk, app)
return {'menu': menu}
def resolve_urls_inplace(menu, pk, app):

2
comissoes/views.py

@ -21,7 +21,7 @@ class ComissaoCrud(Crud):
model = Comissao
help_path = 'modulo_comissoes'
class BaseMixin(crud.base.BaseMixin):
class BaseMixin(crud.base.CrudBaseMixin):
list_field_names = ['nome', 'sigla', 'tipo', 'data_criacao']

47
crud/base.py

@ -56,7 +56,7 @@ def make_pagination(index, num_pages):
return head + [None] + tail
class BaseMixin(CrispyLayoutFormMixin):
class CrudBaseMixin(CrispyLayoutFormMixin):
@classmethod
def url_name(cls, suffix):
@ -88,7 +88,7 @@ class BaseMixin(CrispyLayoutFormMixin):
return self.resolve_url(DELETE, args=(self.object.id,))
def get_template_names(self):
names = super(BaseMixin, self).get_template_names()
names = super(CrudBaseMixin, self).get_template_names()
names.append("crud/%s.html" %
self.template_name_suffix.lstrip('_'))
return names
@ -104,6 +104,10 @@ class BaseMixin(CrispyLayoutFormMixin):
class CrudListView(ListView):
@classmethod
def get_url_regex(cls):
return r'^$'
paginate_by = 10
no_entries_msg = _('Nenhum registro encontrado.')
@ -116,7 +120,8 @@ class CrudListView(ListView):
def _as_row(self, obj):
return [
(get_field_display(obj, name)[1], obj.pk if i == 0 else None)
(get_field_display(obj, name)[1],
self.resolve_url(DETAIL, args=(obj.id,)) if i == 0 else None)
for i, name in enumerate(self.list_field_names)]
def get_context_data(self, **kwargs):
@ -142,6 +147,10 @@ class CrudListView(ListView):
class CrudCreateView(FormMessagesMixin, CreateView):
@classmethod
def get_url_regex(cls):
return r'^create$'
form_valid_message, form_invalid_message = FORM_MESSAGES[CREATE]
@property
@ -157,8 +166,19 @@ class CrudCreateView(FormMessagesMixin, CreateView):
return super(CrudCreateView, self).get_context_data(**kwargs)
class CrudDetailView(DetailView):
@classmethod
def get_url_regex(cls):
return r'^(?P<pk>\d+)$'
class CrudUpdateView(FormMessagesMixin, UpdateView):
@classmethod
def get_url_regex(cls):
return r'^(?P<pk>\d+)/edit$'
form_valid_message, form_invalid_message = FORM_MESSAGES[UPDATE]
@property
@ -171,6 +191,10 @@ class CrudUpdateView(FormMessagesMixin, UpdateView):
class CrudDeleteView(FormMessagesMixin, DeleteView):
@classmethod
def get_url_regex(cls):
return r'^(?P<pk>\d+)/delete$'
form_valid_message, form_invalid_message = FORM_MESSAGES[DELETE]
@property
@ -182,10 +206,10 @@ class CrudDeleteView(FormMessagesMixin, DeleteView):
class Crud:
BaseMixin = BaseMixin
BaseMixin = CrudBaseMixin
ListView = CrudListView
CreateView = CrudCreateView
DetailView = DetailView
DetailView = CrudDetailView
UpdateView = CrudUpdateView
DeleteView = CrudDeleteView
help_path = ''
@ -197,6 +221,7 @@ class Crud:
class CrudViewWithBase(cls.BaseMixin, view):
model = cls.model
help_path = cls.help_path
crud = cls
CrudViewWithBase.__name__ = view.__name__
return CrudViewWithBase
@ -208,14 +233,16 @@ class Crud:
return [url(regex, view.as_view(), name=view.url_name(suffix))
for regex, view, suffix in [
(r'^$', CrudListView, LIST),
(r'^create$', CrudCreateView, CREATE),
(r'^(?P<pk>\d+)$', CrudDetailView, DETAIL),
(r'^(?P<pk>\d+)/edit$', CrudUpdateView, UPDATE),
(r'^(?P<pk>\d+)/delete$', CrudDeleteView, DELETE), ]]
(CrudListView.get_url_regex(), CrudListView, LIST),
(CrudCreateView.get_url_regex(), CrudCreateView, CREATE),
(CrudDetailView.get_url_regex(), CrudDetailView, DETAIL),
(CrudUpdateView.get_url_regex(), CrudUpdateView, UPDATE),
(CrudDeleteView.get_url_regex(), CrudDeleteView, DELETE),
]]
@classonlymethod
def build(cls, _model, _help_path):
class ModelCrud(cls):
model = _model
help_path = _help_path

81
crud/masterdetail.py

@ -0,0 +1,81 @@
from django.utils.decorators import classonlymethod
from .base import (CREATE, LIST, Crud, CrudBaseMixin, CrudCreateView,
CrudDeleteView, CrudDetailView, CrudListView,
CrudUpdateView)
class MasterDetailCrud(Crud):
class BaseMixin(CrudBaseMixin):
@property
def list_url(self):
return self.resolve_url(LIST, args=(self.kwargs['pk'],))
@property
def create_url(self):
return self.resolve_url(CREATE, args=(self.kwargs['pk'],))
def get_context_data(self, **kwargs):
obj = getattr(self, 'object', None)
if obj:
root_pk = getattr(obj, self.crud.parent_field).pk
else:
root_pk = self.kwargs['pk'] # in list and create
kwargs.setdefault('root_pk', root_pk)
return super(MasterDetailCrud.BaseMixin,
self).get_context_data(**kwargs)
class ListView(CrudListView):
@classmethod
def get_url_regex(cls):
return r'^(?P<pk>\d+)/%s$' % cls.model._meta.model_name
def get_queryset(self):
qs = super(MasterDetailCrud.ListView, self).get_queryset()
kwargs = {self.crud.parent_field: self.kwargs['pk']}
return qs.filter(**kwargs)
class CreateView(CrudCreateView):
@classmethod
def get_url_regex(cls):
return r'^(?P<pk>\d+)/%s/create$' % cls.model._meta.model_name
def get_form(self, form_class=None):
form = super(MasterDetailCrud.CreateView,
self).get_form(form_class)
field = self.model._meta.get_field(self.crud.parent_field)
parent = field.related_model.objects.get(pk=self.kwargs['pk'])
setattr(form.instance, self.crud.parent_field, parent)
return form
class DetailView(CrudDetailView):
@classmethod
def get_url_regex(cls):
return r'^%s/(?P<pk>\d+)$' % cls.model._meta.model_name
class UpdateView(CrudUpdateView):
@classmethod
def get_url_regex(cls):
return r'^%s/(?P<pk>\d+)/edit$' % cls.model._meta.model_name
class DeleteView(CrudDeleteView):
@classmethod
def get_url_regex(cls):
return r'^%s/(?P<pk>\d+)/delete$' % cls.model._meta.model_name
def get_success_url(self):
pk = getattr(self.get_object(), self.crud.parent_field).pk
return self.resolve_url(LIST, args=(pk,))
@classonlymethod
def build(cls, model, parent_field, help_path):
crud = super(MasterDetailCrud, cls).build(model, help_path)
crud.parent_field = parent_field
return crud

5
crud/tests/stub_app/models.py

@ -21,3 +21,8 @@ class Country(models.Model):
def __str__(self):
return self.name
class City(models.Model):
name = models.CharField(max_length=50)
country = models.ForeignKey(Country)

5
crud/tests/stub_app/urls.py

@ -1,7 +1,8 @@
from django.conf.urls import include, url
from .views import CountryCrud
from .views import CityCrud, CountryCrud
urlpatterns = [
url(r'^country/', include(CountryCrud.get_urls(), 'stub_app')),
url(r'^country/', include(
CountryCrud.get_urls() + CityCrud.get_urls(), 'stub_app')),
]

8
crud/tests/stub_app/views.py

@ -1,6 +1,7 @@
from crud.base import Crud, CrudListView
from crud.masterdetail import MasterDetailCrud
from .models import Country
from .models import City, Country
class CountryCrud(Crud):
@ -9,3 +10,8 @@ class CountryCrud(Crud):
class ListView(CrudListView):
paginate_by = 10
class CityCrud(MasterDetailCrud):
model = City
help_path = 'help_path',

14
crud/tests/test_masterdetail.py

@ -0,0 +1,14 @@
import pytest
from django.core.urlresolvers import reverse
@pytest.mark.parametrize('path_name', [
'/country/1/city stub_app:city_list',
'/country/1/city/create stub_app:city_create',
'/country/city/1 stub_app:city_detail',
'/country/city/1/edit stub_app:city_update',
'/country/city/1/delete stub_app:city_delete',
])
def test_reverse(path_name):
path, name = path_name.split()
assert path == reverse(name, args=(1,))

2
materia/views.py

@ -62,7 +62,7 @@ class MateriaLegislativaCrud(Crud):
model = MateriaLegislativa
help_path = 'materia_legislativa'
class BaseMixin(crud.base.BaseMixin):
class BaseMixin(crud.base.CrudBaseMixin):
list_field_names = ['tipo', 'numero', 'ano', 'data_apresentacao']

2
norma/views.py

@ -43,7 +43,7 @@ class NormaCrud(Crud):
def layout_key(self):
return 'NormaJuridicaCreate'
class BaseMixin(crud.base.BaseMixin):
class BaseMixin(crud.base.CrudBaseMixin):
list_field_names = ['tipo', 'numero', 'ano', 'ementa']

110
parlamentares/forms.py

@ -9,7 +9,7 @@ import crispy_layout_mixin
import sapl
from crispy_layout_mixin import form_actions
from .models import Dependente, Filiacao, Legislatura, Mandato, Parlamentar
from .models import Filiacao, Legislatura, Mandato, Parlamentar
class ParlamentarForm(ModelForm):
@ -48,114 +48,6 @@ class ParlamentarCreateForm(ParlamentarForm):
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('&nbsp;'),
Submit('excluir', 'Excluir',
css_class='btn btn-primary')])
class DependenteForm(ModelForm):
class Meta:
model = Dependente
fields = ['nome',
'data_nascimento',
'tipo',
'sexo',
'cpf',
'rg',
'titulo_eleitor']
def __init__(self, *args, **kwargs):
row1 = crispy_layout_mixin.to_row(
[('nome', 12)])
row2 = crispy_layout_mixin.to_row(
[('tipo', 4),
('sexo', 4),
('data_nascimento', 4)])
row3 = crispy_layout_mixin.to_row(
[('cpf', 4),
('rg', 4),
('titulo_eleitor', 4)])
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(_('Cadastro de Dependentes'),
row1, row2, row3,
form_actions())
)
super(DependenteForm, self).__init__(
*args, **kwargs)
class DependenteEditForm(DependenteForm):
def __init__(self, *args, **kwargs):
super(DependenteEditForm, self).__init__(
*args, **kwargs)
self.helper.layout[0][-1:] = form_actions(more=[
HTML('&nbsp;'),
Submit('excluir', 'Excluir',
css_class='btn btn-primary')])
class FiliacaoForm(ModelForm):
class Meta:

3
parlamentares/layouts.yaml

@ -69,7 +69,8 @@ Filiacao:
Mandato:
Mandato:
- 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
TipoDependente:

8
parlamentares/test_parlamentares.py

@ -70,7 +70,7 @@ def test_dependente_submit(client):
mommy.make(Partido, pk=32)
mommy.make(TipoDependente, pk=3)
client.post(reverse('parlamentares:parlamentar_dependente',
client.post(reverse('parlamentares:dependente_create',
kwargs={'pk': 14}),
{'nome': 'Eduardo',
'tipo': 3,
@ -86,7 +86,7 @@ def test_dependente_submit(client):
@pytest.mark.django_db(transaction=False)
def test_form_errors_dependente(client):
mommy.make(Parlamentar, pk=14)
response = client.post(reverse('parlamentares:parlamentar_dependente',
response = client.post(reverse('parlamentares:dependente_create',
kwargs={'pk': 14}),
{'salvar': 'salvar'},
follow=True)
@ -120,7 +120,7 @@ def test_mandato_submit(client):
mommy.make(Parlamentar, pk=14)
mommy.make(Legislatura, pk=5)
client.post(reverse('parlamentares:parlamentar_mandato',
client.post(reverse('parlamentares:mandato_create',
kwargs={'pk': 14}),
{'legislatura': 5,
'data_fim_mandato': '2016-01-01',
@ -136,7 +136,7 @@ def test_mandato_submit(client):
@pytest.mark.django_db(transaction=False)
def test_form_errors_mandato(client):
mommy.make(Parlamentar, pk=14)
response = client.post(reverse('parlamentares:parlamentar_mandato',
response = client.post(reverse('parlamentares:mandato_create',
kwargs={'pk': 14}),
{'legislatura': '',
'salvar': 'salvar'},

25
parlamentares/urls.py

@ -1,12 +1,10 @@
from django.conf.urls import include, url
from parlamentares.views import (CargoMesaCrud, ColigacaoCrud,
from parlamentares.views import (CargoMesaCrud, ColigacaoCrud, DependenteCrud,
FiliacaoEditView, FiliacaoView,
LegislaturaCrud, MandatoEditView, MandatoView,
LegislaturaCrud, MandatoCrud,
MesaDiretoraView, NivelInstrucaoCrud,
ParlamentarCrud,
ParlamentaresDependentesEditView,
ParlamentaresDependentesView, PartidoCrud,
ParlamentarCrud, PartidoCrud,
SessaoLegislativaCrud, TipoAfastamentoCrud,
TipoDependenteCrud, TipoMilitarCrud)
@ -15,7 +13,10 @@ from .apps import AppConfig
app_name = AppConfig.name
urlpatterns = [
url(r'^parlamentar/', include(ParlamentarCrud.get_urls())),
url(r'^parlamentar/', include(
ParlamentarCrud.get_urls() + DependenteCrud.get_urls() +
MandatoCrud.get_urls()
)),
url(r'^sistema/parlamentar/legislatura/',
include(LegislaturaCrud.get_urls())),
@ -36,24 +37,12 @@ urlpatterns = [
url(r'^sistema/mesa-diretora/cargo-mesa/',
include(CargoMesaCrud.get_urls())),
url(r'^parlamentar/(?P<pk>\d+)/dependente$',
ParlamentaresDependentesView.as_view(),
name='parlamentar_dependente'),
url(r'^parlamentar/(?P<pk>\d+)/dependente/(?P<dk>\d+)$',
ParlamentaresDependentesEditView.as_view(),
name='parlamentar_dependente_edit'),
url(r'^parlamentar/(?P<pk>\d+)/filiacao$',
FiliacaoView.as_view(),
name='parlamentar_filiacao'),
url(r'^parlamentar/(?P<pk>\d+)/filiacao/(?P<dk>\d+)$',
FiliacaoEditView.as_view(),
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/$',
MesaDiretoraView.as_view(), name='mesa_diretora'),

149
parlamentares/views.py

@ -8,10 +8,10 @@ from django.views.generic import CreateView, FormView, UpdateView
import crud.base
from crud.base import Crud
from crud.masterdetail import MasterDetailCrud
from .forms import (DependenteEditForm, DependenteForm, FiliacaoEditForm,
FiliacaoForm, MandatoEditForm, MandatoForm,
ParlamentarCreateForm, ParlamentarForm)
from .forms import (FiliacaoEditForm, FiliacaoForm, ParlamentarCreateForm,
ParlamentarForm)
from .models import (CargoMesa, Coligacao, ComposicaoMesa, Dependente,
Filiacao, Legislatura, Mandato, NivelInstrucao,
Parlamentar, Partido, SessaoLegislativa, SituacaoMilitar,
@ -21,7 +21,6 @@ CargoMesaCrud = Crud.build(CargoMesa, 'cargo_mesa')
LegislaturaCrud = Crud.build(Legislatura, 'tabelas_auxiliares#legislatura')
ColigacaoCrud = Crud.build(Coligacao, 'coligacao')
PartidoCrud = Crud.build(Partido, 'partidos')
DependenteCrud = Crud.build(Dependente, '')
SessaoLegislativaCrud = Crud.build(SessaoLegislativa, 'sessao_legislativa')
FiliacaoCrud = Crud.build(Filiacao, '')
MandatoCrud = Crud.build(Mandato, '')
@ -30,6 +29,9 @@ NivelInstrucaoCrud = Crud.build(NivelInstrucao, 'nivel_instrucao')
TipoAfastamentoCrud = Crud.build(TipoAfastamento, 'tipo_afastamento')
TipoMilitarCrud = Crud.build(SituacaoMilitar, 'tipo_situa_militar')
DependenteCrud = MasterDetailCrud.build(Dependente, 'parlamentar', '')
MandatoCrud = MasterDetailCrud.build(Mandato, 'parlamentar', '')
class ParlamentarCrud(Crud):
model = Parlamentar
@ -160,74 +162,6 @@ def validate(form, parlamentar, filiacao, request):
return True
class ParlamentaresDependentesView(CreateView):
template_name = "parlamentares/parlamentar_dependente.html"
form_class = DependenteForm
model = Dependente
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('parlamentares:parlamentar_dependente',
kwargs={'pk': pk})
def get_context_data(self, **kwargs):
context = super(ParlamentaresDependentesView, self).\
get_context_data(**kwargs)
pk = self.kwargs['pk']
parlamentar = Parlamentar.objects.get(pk=pk)
dependentes = Dependente.objects.filter(
parlamentar=parlamentar).order_by('nome', 'tipo')
if len(parlamentar.mandato_set.all()) == 0:
legislatura_id = 0
else:
legislatura_id = parlamentar.mandato_set.last().legislatura.id
context.update({'object': parlamentar,
'dependentes': dependentes,
# precisa de legislatura_id???
'legislatura_id': legislatura_id})
return context
def form_valid(self, form):
parlamentar_id = self.kwargs['pk']
dependente = form.save(commit=False)
parlamentar = Parlamentar.objects.get(id=parlamentar_id)
dependente.parlamentar = parlamentar
dependente.save()
return HttpResponseRedirect(self.get_success_url())
class ParlamentaresDependentesEditView(UpdateView):
template_name = "parlamentares/parlamentar_dependente_edit.html"
form_class = DependenteEditForm
model = Dependente
pk_url_kwarg = 'dk'
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('parlamentares:parlamentar_dependente',
kwargs={'pk': pk})
def get_context_data(self, **kwargs):
context = super(ParlamentaresDependentesEditView, 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):
if 'salvar' in self.request.POST:
form.save()
elif 'excluir' in self.request.POST:
dependente = form.instance
dependente.delete()
return HttpResponseRedirect(self.get_success_url())
class MesaDiretoraView(FormView):
template_name = "mesa_diretora/mesa_diretora.html"
success_url = reverse_lazy('parlamentares:mesa_diretora')
@ -415,74 +349,3 @@ class FiliacaoEditView(UpdateView):
filiacao.save()
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())

4
sessao/views.py

@ -42,13 +42,13 @@ class SessaoCrud(Crud):
model = SessaoPlenaria
help_path = 'sessao_plenaria'
class BaseMixin(crud.base.BaseMixin):
class BaseMixin(crud.base.CrudBaseMixin):
list_field_names = ['numero', 'tipo', 'legislatura',
'sessao_legislativa', 'data_inicio', 'hora_inicio']
# FIXME!!!! corrigir referencias no codigo e remover isso!!!!!
# fazer com #230
class CrudDetailView(crud.base.BaseMixin, crud.base.DetailView):
class CrudDetailView(crud.base.CrudDetailView):
model = SessaoPlenaria
help_path = 'sessao_plenaria'

32
templates/parlamentares/parlamentar_dependente.html

@ -1,32 +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>Dependentes</legend>
<table class="table table-striped table-bordered">
<thead class="thead-default">
<tr>
<th><strong>Nome Dependente</strong></th>
<th><strong>Tipo</strong></th>
<th><strong>Data de Nascimento</strong></th>
</tr>
</thead>
{% for d in dependentes %}
<tr>
<td><a href="{% url 'parlamentares:parlamentar_dependente_edit' object.id d.id %}">{{d.nome}}</a></td>
<td>{{d.tipo }}</td>
<td>{{d.data_nascimento|default_if_none:""}}</td>
</tr>
{% endfor %}
</table>
</fieldset>
{% crispy form %}
{% endblock detail_content %}

7
templates/parlamentares/parlamentar_dependente_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 %}

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 %}

4
templates/parlamentares/subnav.yaml

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

Loading…
Cancel
Save