mirror of
https://github.com/jazzband/django-admin2.git
synced 2026-03-16 22:20:24 +00:00
migrating the views to be admin views.
generating the get_urls dynamically and support permissions.
This commit is contained in:
parent
330cafa309
commit
4bf06dd6c2
5 changed files with 27 additions and 41 deletions
|
|
@ -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('',
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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<pk>[0-9]+)/$', views.ModelEditFormView, name='update')
|
||||
detail_view = views.AdminView(r'^(?P<pk>[0-9]+)/update/$', views.ModelDetailView, name='detail')
|
||||
delete_view = views.AdminView(r'^(?P<pk>[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<pk>[0-9]+)/$',
|
||||
view=self.detail_view.as_view(**self.get_detail_kwargs()),
|
||||
name=self.get_prefixed_view_name('detail')
|
||||
),
|
||||
url(
|
||||
regex=r'^(?P<pk>[0-9]+)/update/$',
|
||||
view=self.update_view.as_view(**self.get_update_kwargs()),
|
||||
name=self.get_prefixed_view_name('update')
|
||||
),
|
||||
url(
|
||||
regex=r'^(?P<pk>[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('',
|
||||
|
|
|
|||
|
|
@ -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']
|
||||
|
|
|
|||
Loading…
Reference in a new issue