Browse Source

Merge 65a92171ef into 7814cb0d8e

pull/337/merge
Marcio Mazza 10 years ago
parent
commit
946d6723e8
  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. 52
      parlamentares/forms.py
  12. 4
      parlamentares/test_parlamentares.py
  13. 16
      parlamentares/urls.py
  14. 77
      parlamentares/views.py
  15. 4
      sessao/views.py
  16. 32
      templates/parlamentares/parlamentar_dependente.html
  17. 7
      templates/parlamentares/parlamentar_dependente_edit.html
  18. 2
      templates/parlamentares/subnav.yaml

15
base/templatetags/menus.py

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

2
comissoes/views.py

@ -21,7 +21,7 @@ class ComissaoCrud(Crud):
model = Comissao model = Comissao
help_path = 'modulo_comissoes' help_path = 'modulo_comissoes'
class BaseMixin(crud.base.BaseMixin): class BaseMixin(crud.base.CrudBaseMixin):
list_field_names = ['nome', 'sigla', 'tipo', 'data_criacao'] 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 return head + [None] + tail
class BaseMixin(CrispyLayoutFormMixin): class CrudBaseMixin(CrispyLayoutFormMixin):
@classmethod @classmethod
def url_name(cls, suffix): def url_name(cls, suffix):
@ -88,7 +88,7 @@ class BaseMixin(CrispyLayoutFormMixin):
return self.resolve_url(DELETE, args=(self.object.id,)) return self.resolve_url(DELETE, args=(self.object.id,))
def get_template_names(self): def get_template_names(self):
names = super(BaseMixin, self).get_template_names() names = super(CrudBaseMixin, self).get_template_names()
names.append("crud/%s.html" % names.append("crud/%s.html" %
self.template_name_suffix.lstrip('_')) self.template_name_suffix.lstrip('_'))
return names return names
@ -104,6 +104,10 @@ class BaseMixin(CrispyLayoutFormMixin):
class CrudListView(ListView): class CrudListView(ListView):
@classmethod
def get_url_regex(cls):
return r'^$'
paginate_by = 10 paginate_by = 10
no_entries_msg = _('Nenhum registro encontrado.') no_entries_msg = _('Nenhum registro encontrado.')
@ -116,7 +120,8 @@ class CrudListView(ListView):
def _as_row(self, obj): def _as_row(self, obj):
return [ 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)] for i, name in enumerate(self.list_field_names)]
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
@ -142,6 +147,10 @@ class CrudListView(ListView):
class CrudCreateView(FormMessagesMixin, CreateView): class CrudCreateView(FormMessagesMixin, CreateView):
@classmethod
def get_url_regex(cls):
return r'^create$'
form_valid_message, form_invalid_message = FORM_MESSAGES[CREATE] form_valid_message, form_invalid_message = FORM_MESSAGES[CREATE]
@property @property
@ -157,8 +166,19 @@ class CrudCreateView(FormMessagesMixin, CreateView):
return super(CrudCreateView, self).get_context_data(**kwargs) 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): 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] form_valid_message, form_invalid_message = FORM_MESSAGES[UPDATE]
@property @property
@ -171,6 +191,10 @@ class CrudUpdateView(FormMessagesMixin, UpdateView):
class CrudDeleteView(FormMessagesMixin, DeleteView): 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] form_valid_message, form_invalid_message = FORM_MESSAGES[DELETE]
@property @property
@ -182,10 +206,10 @@ class CrudDeleteView(FormMessagesMixin, DeleteView):
class Crud: class Crud:
BaseMixin = BaseMixin BaseMixin = CrudBaseMixin
ListView = CrudListView ListView = CrudListView
CreateView = CrudCreateView CreateView = CrudCreateView
DetailView = DetailView DetailView = CrudDetailView
UpdateView = CrudUpdateView UpdateView = CrudUpdateView
DeleteView = CrudDeleteView DeleteView = CrudDeleteView
help_path = '' help_path = ''
@ -197,6 +221,7 @@ class Crud:
class CrudViewWithBase(cls.BaseMixin, view): class CrudViewWithBase(cls.BaseMixin, view):
model = cls.model model = cls.model
help_path = cls.help_path help_path = cls.help_path
crud = cls
CrudViewWithBase.__name__ = view.__name__ CrudViewWithBase.__name__ = view.__name__
return CrudViewWithBase return CrudViewWithBase
@ -208,14 +233,16 @@ class Crud:
return [url(regex, view.as_view(), name=view.url_name(suffix)) return [url(regex, view.as_view(), name=view.url_name(suffix))
for regex, view, suffix in [ for regex, view, suffix in [
(r'^$', CrudListView, LIST), (CrudListView.get_url_regex(), CrudListView, LIST),
(r'^create$', CrudCreateView, CREATE), (CrudCreateView.get_url_regex(), CrudCreateView, CREATE),
(r'^(?P<pk>\d+)$', CrudDetailView, DETAIL), (CrudDetailView.get_url_regex(), CrudDetailView, DETAIL),
(r'^(?P<pk>\d+)/edit$', CrudUpdateView, UPDATE), (CrudUpdateView.get_url_regex(), CrudUpdateView, UPDATE),
(r'^(?P<pk>\d+)/delete$', CrudDeleteView, DELETE), ]] (CrudDeleteView.get_url_regex(), CrudDeleteView, DELETE),
]]
@classonlymethod @classonlymethod
def build(cls, _model, _help_path): def build(cls, _model, _help_path):
class ModelCrud(cls): class ModelCrud(cls):
model = _model model = _model
help_path = _help_path 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): def __str__(self):
return self.name 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 django.conf.urls import include, url
from .views import CountryCrud from .views import CityCrud, CountryCrud
urlpatterns = [ 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.base import Crud, CrudListView
from crud.masterdetail import MasterDetailCrud
from .models import Country from .models import City, Country
class CountryCrud(Crud): class CountryCrud(Crud):
@ -9,3 +10,8 @@ class CountryCrud(Crud):
class ListView(CrudListView): class ListView(CrudListView):
paginate_by = 10 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 model = MateriaLegislativa
help_path = 'materia_legislativa' help_path = 'materia_legislativa'
class BaseMixin(crud.base.BaseMixin): class BaseMixin(crud.base.CrudBaseMixin):
list_field_names = ['tipo', 'numero', 'ano', 'data_apresentacao'] list_field_names = ['tipo', 'numero', 'ano', 'data_apresentacao']

2
norma/views.py

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

52
parlamentares/forms.py

@ -9,7 +9,7 @@ import crispy_layout_mixin
import sapl import sapl
from crispy_layout_mixin import form_actions 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): class ParlamentarForm(ModelForm):
@ -106,56 +106,6 @@ class MandatoEditForm(MandatoForm):
css_class='btn btn-primary')]) 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 FiliacaoForm(ModelForm):
class Meta: class Meta:

4
parlamentares/test_parlamentares.py

@ -70,7 +70,7 @@ def test_dependente_submit(client):
mommy.make(Partido, pk=32) mommy.make(Partido, pk=32)
mommy.make(TipoDependente, pk=3) mommy.make(TipoDependente, pk=3)
client.post(reverse('parlamentares:parlamentar_dependente', client.post(reverse('parlamentares:dependente_create',
kwargs={'pk': 14}), kwargs={'pk': 14}),
{'nome': 'Eduardo', {'nome': 'Eduardo',
'tipo': 3, 'tipo': 3,
@ -86,7 +86,7 @@ def test_dependente_submit(client):
@pytest.mark.django_db(transaction=False) @pytest.mark.django_db(transaction=False)
def test_form_errors_dependente(client): def test_form_errors_dependente(client):
mommy.make(Parlamentar, pk=14) mommy.make(Parlamentar, pk=14)
response = client.post(reverse('parlamentares:parlamentar_dependente', response = client.post(reverse('parlamentares:dependente_create',
kwargs={'pk': 14}), kwargs={'pk': 14}),
{'salvar': 'salvar'}, {'salvar': 'salvar'},
follow=True) follow=True)

16
parlamentares/urls.py

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

77
parlamentares/views.py

@ -8,10 +8,10 @@ from django.views.generic import CreateView, FormView, UpdateView
import crud.base import crud.base
from crud.base import Crud from crud.base import Crud
from crud.masterdetail import MasterDetailCrud
from .forms import (DependenteEditForm, DependenteForm, FiliacaoEditForm, from .forms import (FiliacaoEditForm, FiliacaoForm, MandatoEditForm,
FiliacaoForm, MandatoEditForm, MandatoForm, MandatoForm, ParlamentarCreateForm, ParlamentarForm)
ParlamentarCreateForm, 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,
@ -21,7 +21,6 @@ CargoMesaCrud = Crud.build(CargoMesa, 'cargo_mesa')
LegislaturaCrud = Crud.build(Legislatura, 'tabelas_auxiliares#legislatura') LegislaturaCrud = Crud.build(Legislatura, 'tabelas_auxiliares#legislatura')
ColigacaoCrud = Crud.build(Coligacao, 'coligacao') ColigacaoCrud = Crud.build(Coligacao, 'coligacao')
PartidoCrud = Crud.build(Partido, 'partidos') PartidoCrud = Crud.build(Partido, 'partidos')
DependenteCrud = Crud.build(Dependente, '')
SessaoLegislativaCrud = Crud.build(SessaoLegislativa, 'sessao_legislativa') SessaoLegislativaCrud = Crud.build(SessaoLegislativa, 'sessao_legislativa')
FiliacaoCrud = Crud.build(Filiacao, '') FiliacaoCrud = Crud.build(Filiacao, '')
MandatoCrud = Crud.build(Mandato, '') MandatoCrud = Crud.build(Mandato, '')
@ -30,6 +29,8 @@ NivelInstrucaoCrud = Crud.build(NivelInstrucao, 'nivel_instrucao')
TipoAfastamentoCrud = Crud.build(TipoAfastamento, 'tipo_afastamento') 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', '')
class ParlamentarCrud(Crud): class ParlamentarCrud(Crud):
model = Parlamentar model = Parlamentar
@ -160,74 +161,6 @@ def validate(form, parlamentar, filiacao, request):
return True 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): class MesaDiretoraView(FormView):
template_name = "mesa_diretora/mesa_diretora.html" template_name = "mesa_diretora/mesa_diretora.html"
success_url = reverse_lazy('parlamentares:mesa_diretora') success_url = reverse_lazy('parlamentares:mesa_diretora')

4
sessao/views.py

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

2
templates/parlamentares/subnav.yaml

@ -5,4 +5,4 @@
- title: Filiações Partidárias - title: Filiações Partidárias
url: parlamentar_filiacao url: parlamentar_filiacao
- title: Dependentes - title: Dependentes
url: parlamentar_dependente url: dependente_list

Loading…
Cancel
Save