migrating the views to be admin views.

generating the get_urls dynamically and
support permissions.
This commit is contained in:
Andrews Medina 2013-06-23 02:52:58 -03:00
parent 330cafa309
commit 4bf06dd6c2
5 changed files with 27 additions and 41 deletions

View file

@ -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('',

View file

@ -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.

View file

@ -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
)

View file

@ -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('',

View file

@ -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']