diff --git a/comissoes/urls.py b/comissoes/urls.py index bff625ee0..dfbde7d40 100644 --- a/comissoes/urls.py +++ b/comissoes/urls.py @@ -7,7 +7,9 @@ from comissoes.views import (CadastrarComissaoView, CargoCrud, ComissaoCrud, PeriodoComposicaoCrud, ReunioesView, TipoComissaoCrud) -comissao_url_patterns = ComissaoCrud.get_urls() + [ +comissao_url_patterns, namespace = ComissaoCrud.get_urls() + +comissao_url_patterns = comissao_url_patterns + [ url(r'^(?P\d+)/composicao$', ComposicaoView.as_view(), name='composicao'), url(r'^(?P\d+)/materias-em-tramitacao$', @@ -27,7 +29,7 @@ comissao_url_patterns = ComissaoCrud.get_urls() + [ ] urlpatterns = [ - url(r'^comissoes/', include(comissao_url_patterns)), + url(r'^comissoes/', include(comissao_url_patterns, namespace)), url(r'^sistema/comissoes/cargo/', include(CargoCrud.get_urls())), url(r'^sistema/comissoes/periodo-composicao/', diff --git a/crud/base.py b/crud/base.py index c778cdb7a..0010209ee 100644 --- a/crud/base.py +++ b/crud/base.py @@ -55,12 +55,12 @@ def make_pagination(index, num_pages): class BaseMixin(CrispyLayoutFormMixin): - @classmethod - def url_name(cls, suffix): - return '%s_%s' % (cls.model._meta.model_name, suffix) + @property + def namespace(self): + return self.model._meta.model_name - def resolve_url(self, suffix, args=None): - return reverse(self.url_name(suffix), args=args) + def resolve_url(self, url_name, args=None): + return reverse('%s:%s' % (self.namespace, url_name), args=args) @property def list_url(self): @@ -195,13 +195,17 @@ class Crud: CrudUpdateView = _add_base(cls.UpdateView) CrudDeleteView = _add_base(cls.DeleteView) - 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'), ]] + urlpatterns = [ + url(r'^$', CrudListView.as_view(), name='list'), + url(r'^create$', CrudCreateView.as_view(), name='create'), + url(r'^(?P\d+)$', CrudDetailView.as_view(), name='detail'), + url(r'^(?P\d+)/edit$', + CrudUpdateView.as_view(), name='update'), + url(r'^(?P\d+)/delete$', + CrudDeleteView.as_view(), name='delete'), + ] + + return urlpatterns, _add_base(object)().namespace @classonlymethod def build(cls, _model, _help_path): diff --git a/crud/tests/test_base.py b/crud/tests/test_base.py index 2021b8447..b8a94a4c9 100644 --- a/crud/tests/test_base.py +++ b/crud/tests/test_base.py @@ -140,11 +140,11 @@ def test_layout_detail_fieldsets(monkeypatch): def test_reverse(): - assert '/countries/' == reverse('country_list') - assert '/countries/create' == reverse('country_create') - assert '/countries/2' == reverse('country_detail', args=(2,)) - assert '/countries/2/edit' == reverse('country_update', args=(2,)) - assert '/countries/2/delete' == reverse('country_delete', args=(2,)) + assert '/countries/' == reverse('country:list') + assert '/countries/create' == reverse('country:create') + assert '/countries/2' == reverse('country:detail', args=(2,)) + assert '/countries/2/edit' == reverse('country:update', args=(2,)) + assert '/countries/2/delete' == reverse('country:delete', args=(2,)) def assert_h1(res, title): diff --git a/materia/urls.py b/materia/urls.py index c19477a72..69b5c08a7 100644 --- a/materia/urls.py +++ b/materia/urls.py @@ -22,8 +22,11 @@ from materia.views import (AcompanhamentoConfirmarView, TramitacaoEditView, TramitacaoView, UnidadeTramitacaoCrud) +materia_legislativa_patterns, namespace = MateriaLegislativaCrud.get_urls() + + urlpatterns = [ - url(r'^materia/', include(MateriaLegislativaCrud.get_urls())), + url(r'^materia/', include(materia_legislativa_patterns, namespace)), url(r'^materia/(?P[0-9]+)/ta$', diff --git a/norma/urls.py b/norma/urls.py index 0085740df..ad3edf43a 100644 --- a/norma/urls.py +++ b/norma/urls.py @@ -14,13 +14,15 @@ from norma.views import (AssuntoNormaCrud, NormaEditView, NormaIncluirView, # o código abaixo: # url(r'^norma/(?P[0-9]+)/ta$', NormaTaView.as_view(), name='ta') # bem como a classe NormaTaView que está em norma.views -norma_url_patterns = NormaTemporarioCrud.get_urls() + [ +norma_url_patterns, namespace = NormaTemporarioCrud.get_urls() + +norma_url_patterns += [ url(r'^norma/(?P[0-9]+)/ta$', NormaTaView.as_view(), name='ta') ] urlpatterns = [ - url(r'^norma/', include(norma_url_patterns)), + url(r'^norma/', include(norma_url_patterns, namespace)), url(r'^sistema/norma/tipo/', include(TipoNormaCrud.get_urls())), url(r'^sistema/norma/assunto/', include(AssuntoNormaCrud.get_urls())), diff --git a/sessao/urls.py b/sessao/urls.py index 79a9d471b..95fba3701 100644 --- a/sessao/urls.py +++ b/sessao/urls.py @@ -21,7 +21,9 @@ from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView, VotacaoNominalExpedienteView, VotacaoNominalView, VotacaoView) -urlpatterns_sessao = SessaoCrud.get_urls() + [ +urlpatterns_sessao, namespace = SessaoCrud.get_urls() + +urlpatterns_sessao = urlpatterns_sessao + [ url(r'^(?P\d+)/expediente$', ExpedienteView.as_view(), name='expediente'), url(r'^(?P\d+)/presenca$', @@ -103,7 +105,7 @@ sessao_rest = [ ] urlpatterns = [ - url(r'^sessao/', include(urlpatterns_sessao)), + url(r'^sessao/', include(urlpatterns_sessao, namespace)), url(r'^media/(?P.*)$', serve, {'document_root': settings.MEDIA_ROOT}), url(r'^rest/', include(sessao_rest)),