diff --git a/djadmin2/core.py b/djadmin2/core.py index 46a01e9..a952a72 100644 --- a/djadmin2/core.py +++ b/djadmin2/core.py @@ -148,7 +148,6 @@ class Admin2(object): name='api_index' ), ) - for model, model_admin in self.registry.iteritems(): model_options = utils.model_options(model) urlpatterns += patterns('', diff --git a/djadmin2/permissions.py b/djadmin2/permissions.py index 298acd1..dbe25a5 100644 --- a/djadmin2/permissions.py +++ b/djadmin2/permissions.py @@ -292,7 +292,7 @@ class TemplatePermissionChecker(object): if view not in self.view_name_mapping: return '' view_name = self.view_name_mapping[view] - view = getattr(self._model_admin, view_name) + view = getattr(self._model_admin, view_name).view # we don't support binding view classes yet, only the name of views # are processed. We have the problem with view classes that we cannot # tell which model admin it was attached to. diff --git a/djadmin2/tests/test_types.py b/djadmin2/tests/test_types.py index a7a6312..3e0563f 100644 --- a/djadmin2/tests/test_types.py +++ b/djadmin2/tests/test_types.py @@ -47,7 +47,7 @@ class ModelAdminTest(TestCase): self.model_admin = MyModelAdmin def test_views(self): - self.assertEquals( - self.model_admin.views[0], - self.model_admin.my_view + self.assertIn( + self.model_admin.my_view, + self.model_admin.views ) diff --git a/djadmin2/types.py b/djadmin2/types.py index 1f1b9a1..4802050 100644 --- a/djadmin2/types.py +++ b/djadmin2/types.py @@ -22,8 +22,9 @@ class ModelAdminBase2(type): def __new__(cls, name, bases, attrs): new_class = super(ModelAdminBase2, cls).__new__(cls, name, bases, attrs) - view_list = [attr for attr in attrs.values() - if isinstance(attr, views.AdminView)] + view_list = getattr(new_class, 'views', []) + view_list.extend([attr for attr in attrs.values() + if isinstance(attr, views.AdminView)]) setattr(new_class, 'views', view_list) return new_class @@ -82,11 +83,11 @@ class ModelAdmin2(object): inlines = [] # Views - index_view = views.ModelListView - create_view = views.ModelAddFormView - update_view = views.ModelEditFormView - detail_view = views.ModelDetailView - delete_view = views.ModelDeleteView + index_view = views.AdminView(r'^$', views.ModelListView, name='index') + create_view = views.AdminView(r'^create/$', views.ModelAddFormView, name='create') + update_view = views.AdminView(r'^(?P[0-9]+)/$', views.ModelEditFormView, name='update') + detail_view = views.AdminView(r'^(?P[0-9]+)/update/$', views.ModelDetailView, name='detail') + delete_view = views.AdminView(r'^(?P[0-9]+)/delete/$', views.ModelDeleteView, name='delete') views = [] # API configuration @@ -172,33 +173,19 @@ class ModelAdmin2(object): return self.get_default_api_view_kwargs() def get_urls(self): - return patterns('', - url( - regex=r'^$', - view=self.index_view.as_view(**self.get_index_kwargs()), - name=self.get_prefixed_view_name('index') - ), - url( - regex=r'^create/$', - view=self.create_view.as_view(**self.get_create_kwargs()), - name=self.get_prefixed_view_name('create') - ), - url( - regex=r'^(?P[0-9]+)/$', - view=self.detail_view.as_view(**self.get_detail_kwargs()), - name=self.get_prefixed_view_name('detail') - ), - url( - regex=r'^(?P[0-9]+)/update/$', - view=self.update_view.as_view(**self.get_update_kwargs()), - name=self.get_prefixed_view_name('update') - ), - url( - regex=r'^(?P[0-9]+)/delete/$', - view=self.delete_view.as_view(**self.get_delete_kwargs()), - name=self.get_prefixed_view_name('delete') - ), - ) + pattern_list = [] + for view in self.views: + get_kwargs = getattr(self, "get_%s_kwargs" % view.name, None) + if not get_kwargs: + get_kwargs = self.get_default_view_kwargs + pattern_list.append( + url( + regex=view.url, + view=view.view.as_view(**get_kwargs()), + name=self.get_prefixed_view_name(view.name) + ) + ) + return patterns('', *pattern_list) def get_api_urls(self): return patterns('', diff --git a/example/blog/tests/test_auth_admin.py b/example/blog/tests/test_auth_admin.py index 0bb2b44..cf5d022 100644 --- a/example/blog/tests/test_auth_admin.py +++ b/example/blog/tests/test_auth_admin.py @@ -28,7 +28,7 @@ class UserAdminTest(TestCase): request = self.factory.get(reverse('admin2:auth_user_create')) request.user = self.user model_admin = UserAdmin2(User, djadmin2.default) - view = model_admin.create_view.as_view( + view = model_admin.create_view.view.as_view( **model_admin.get_create_kwargs()) response = view(request) form = response.context_data['form'] @@ -49,7 +49,7 @@ class UserAdminTest(TestCase): reverse('admin2:auth_user_update', args=(self.user.pk,))) request.user = self.user model_admin = UserAdmin2(User, djadmin2.default) - view = model_admin.update_view.as_view( + view = model_admin.update_view.view.as_view( **model_admin.get_update_kwargs()) response = view(request, pk=self.user.pk) form = response.context_data['form']