diff --git a/base/templatetags/menus.py b/base/templatetags/menus.py index fdc6ea379..96bdc9e5a 100644 --- a/base/templatetags/menus.py +++ b/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): diff --git a/comissoes/views.py b/comissoes/views.py index 88ca097f0..09bdd137d 100644 --- a/comissoes/views.py +++ b/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'] diff --git a/crud/base.py b/crud/base.py index ea9f9c109..cfe2c370d 100644 --- a/crud/base.py +++ b/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\d+)$' + + class CrudUpdateView(FormMessagesMixin, UpdateView): + @classmethod + def get_url_regex(cls): + return r'^(?P\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\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\d+)$', CrudDetailView, DETAIL), - (r'^(?P\d+)/edit$', CrudUpdateView, UPDATE), - (r'^(?P\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 diff --git a/crud/masterdetail.py b/crud/masterdetail.py new file mode 100644 index 000000000..ad82261c7 --- /dev/null +++ b/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\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\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\d+)$' % cls.model._meta.model_name + + class UpdateView(CrudUpdateView): + + @classmethod + def get_url_regex(cls): + return r'^%s/(?P\d+)/edit$' % cls.model._meta.model_name + + class DeleteView(CrudDeleteView): + + @classmethod + def get_url_regex(cls): + return r'^%s/(?P\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 diff --git a/crud/tests/stub_app/models.py b/crud/tests/stub_app/models.py index 5540eea7c..1aab8779c 100644 --- a/crud/tests/stub_app/models.py +++ b/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) diff --git a/crud/tests/stub_app/urls.py b/crud/tests/stub_app/urls.py index 623f167bf..99818018d 100644 --- a/crud/tests/stub_app/urls.py +++ b/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')), ] diff --git a/crud/tests/stub_app/views.py b/crud/tests/stub_app/views.py index 315397696..cd63fb7f1 100644 --- a/crud/tests/stub_app/views.py +++ b/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', diff --git a/crud/tests/test_masterdetail.py b/crud/tests/test_masterdetail.py new file mode 100644 index 000000000..b9d0d8ade --- /dev/null +++ b/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,)) diff --git a/materia/views.py b/materia/views.py index 97efe04a7..b47589a85 100644 --- a/materia/views.py +++ b/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'] diff --git a/norma/views.py b/norma/views.py index e454ac7cc..838e7a62b 100644 --- a/norma/views.py +++ b/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'] diff --git a/parlamentares/forms.py b/parlamentares/forms.py index 3df9ae69e..d0a3af44e 100644 --- a/parlamentares/forms.py +++ b/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(' '), - 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(' '), - Submit('excluir', 'Excluir', - css_class='btn btn-primary')]) - - class FiliacaoForm(ModelForm): class Meta: diff --git a/parlamentares/layouts.yaml b/parlamentares/layouts.yaml index d4d342231..be274551b 100644 --- a/parlamentares/layouts.yaml +++ b/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: diff --git a/parlamentares/test_parlamentares.py b/parlamentares/test_parlamentares.py index 81d9b35ed..158322392 100644 --- a/parlamentares/test_parlamentares.py +++ b/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'}, diff --git a/parlamentares/urls.py b/parlamentares/urls.py index 6ef8bdf59..2c3978e55 100644 --- a/parlamentares/urls.py +++ b/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\d+)/dependente$', - ParlamentaresDependentesView.as_view(), - name='parlamentar_dependente'), - url(r'^parlamentar/(?P\d+)/dependente/(?P\d+)$', - ParlamentaresDependentesEditView.as_view(), - name='parlamentar_dependente_edit'), url(r'^parlamentar/(?P\d+)/filiacao$', FiliacaoView.as_view(), name='parlamentar_filiacao'), url(r'^parlamentar/(?P\d+)/filiacao/(?P\d+)$', FiliacaoEditView.as_view(), name='parlamentar_filiacao_edit'), - url(r'^parlamentar/(?P\d+)/mandato$', - MandatoView.as_view(), - name='parlamentar_mandato'), - url(r'^parlamentar/(?P\d+)/mandato/(?P\d+)$', - MandatoEditView.as_view(), - name='parlamentar_mandato_edit'), url(r'^mesa-diretora/$', MesaDiretoraView.as_view(), name='mesa_diretora'), diff --git a/parlamentares/views.py b/parlamentares/views.py index c0bb5d859..794970f8d 100644 --- a/parlamentares/views.py +++ b/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()) diff --git a/sessao/views.py b/sessao/views.py index a8fbbb002..442136151 100644 --- a/sessao/views.py +++ b/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' diff --git a/templates/parlamentares/parlamentar_dependente.html b/templates/parlamentares/parlamentar_dependente.html deleted file mode 100644 index 01683a8d8..000000000 --- a/templates/parlamentares/parlamentar_dependente.html +++ /dev/null @@ -1,32 +0,0 @@ -{% extends "crud/detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %}{% endblock %} -{% block detail_content %} - -

Parlamentar: {{ object.nome_parlamentar }}

- -
- Dependentes - - - - - - - - - - {% for d in dependentes %} - - - - - - {% endfor %} -
Nome DependenteTipoData de Nascimento
{{d.nome}}{{d.tipo }}{{d.data_nascimento|default_if_none:""}}
-
- - {% crispy form %} - -{% endblock detail_content %} diff --git a/templates/parlamentares/parlamentar_dependente_edit.html b/templates/parlamentares/parlamentar_dependente_edit.html deleted file mode 100644 index 9682c56d5..000000000 --- a/templates/parlamentares/parlamentar_dependente_edit.html +++ /dev/null @@ -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 %} diff --git a/templates/parlamentares/parlamentar_mandato.html b/templates/parlamentares/parlamentar_mandato.html deleted file mode 100644 index 23461b46e..000000000 --- a/templates/parlamentares/parlamentar_mandato.html +++ /dev/null @@ -1,38 +0,0 @@ -{% extends "crud/detail.html" %} -{% load i18n %} -{% load crispy_forms_tags %} -{% block actions %}{% endblock %} -{% block detail_content %} - -

Parlamentar: {{ object.nome_parlamentar }}

- -
- Mandatos - - - - - - - - - - - - - {% for m in mandatos %} - - - - - - - - - {% endfor %} -
LegislaturaColigaçãoFim MandatoExp. DiplomaNº VotosObservação
{{m.legislatura}}{{m.coligacao|default_if_none:""}}{{m.data_fim_mandato|default_if_none:""}}{{m.data_expedicao_diploma|default_if_none:""}}{{m.votos_recebidos|default_if_none:""}}{{m.observacao|default_if_none:""}}
-
- - {% crispy form %} - -{% endblock detail_content %} diff --git a/templates/parlamentares/parlamentar_mandato_edit.html b/templates/parlamentares/parlamentar_mandato_edit.html deleted file mode 100644 index 9682c56d5..000000000 --- a/templates/parlamentares/parlamentar_mandato_edit.html +++ /dev/null @@ -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 %} diff --git a/templates/parlamentares/subnav.yaml b/templates/parlamentares/subnav.yaml index 35eae1ffc..4a5460213 100644 --- a/templates/parlamentares/subnav.yaml +++ b/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