summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Holovaty <adrian@holovaty.com>2007-01-14 20:00:11 +0000
committerAdrian Holovaty <adrian@holovaty.com>2007-01-14 20:00:11 +0000
commit32c367253a0b92933939abdd9a88535971de4155 (patch)
tree9e6fc8664db5e29c33848a3e5dbb733e73dc268f
parent815a0843bc50189776cc569aefb21c27a5c3ddcd (diff)
newforms-admin: Implemented model_admin_view() view and stub ModelAdminView class. Changed admin URLconf to point to model_admin_view().
git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@4315 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/contrib/admin/urls.py8
-rw-r--r--django/contrib/admin/views/main.py38
2 files changed, 40 insertions, 6 deletions
diff --git a/django/contrib/admin/urls.py b/django/contrib/admin/urls.py
index 508bb3a1ca..5f9638c63f 100644
--- a/django/contrib/admin/urls.py
+++ b/django/contrib/admin/urls.py
@@ -32,12 +32,8 @@ urlpatterns = patterns('',
# "Change user password" -- another special-case view
('^auth/user/(\d+)/password/$', 'django.contrib.admin.views.auth.user_change_password'),
- # Add/change/delete/history
- ('^([^/]+)/([^/]+)/$', 'django.contrib.admin.views.main.change_list'),
- ('^([^/]+)/([^/]+)/add/$', 'django.contrib.admin.views.main.add_stage'),
- ('^([^/]+)/([^/]+)/(.+)/history/$', 'django.contrib.admin.views.main.history'),
- ('^([^/]+)/([^/]+)/(.+)/delete/$', 'django.contrib.admin.views.main.delete_stage'),
- ('^([^/]+)/([^/]+)/(.+)/$', 'django.contrib.admin.views.main.change_stage'),
+ # Model-specific admin pages.
+ ('^([^/]+)/([^/]+)/(?:(.+)/)?$', 'django.contrib.admin.views.main.model_admin_view'),
)
del i18n_view
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 282038e205..3d0c6844a6 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -105,6 +105,44 @@ def get_javascript_imports(opts, auto_populated_fields, field_sets):
break
return js
+def model_admin_view(request, app_label, model_name, rest_of_url):
+ model = models.get_model(app_label, model_name)
+ if model is None:
+ raise Http404("App %r, model %r, not found" % (app_label, model_name))
+ mav = ModelAdminView(model._meta)
+ return mav(request, rest_of_url)
+
+class ModelAdminView(object):
+ def __init__(self, opts):
+ self.opts = opts
+
+ def __call__(self, request, url):
+ if url is None:
+ return self.change_list_view(request)
+ elif url.endswith('add'):
+ return self.add_view(request)
+ elif url.endswith('history'):
+ return self.history_view(request, url[:-8])
+ elif url.endswith('delete'):
+ return self.delete_view(request, url[:-7])
+ else:
+ return self.change_view(request, url)
+
+ def add_view(self, request):
+ raise NotImplementedError('Add view')
+
+ def change_view(self, request, object_id):
+ raise NotImplementedError('Change view with object %r' % object_id)
+
+ def change_list_view(self, request):
+ raise NotImplementedError('Change list view')
+
+ def delete_view(self, request, object_id):
+ raise NotImplementedError('Delete view with object %r' % object_id)
+
+ def history_view(self, request, object_id):
+ raise NotImplementedError('History view with object %r' % object_id)
+
class AdminBoundField(object):
def __init__(self, field, field_mapping, original):
self.field = field