diff options
| author | Adrian Holovaty <adrian@holovaty.com> | 2007-01-14 20:00:11 +0000 |
|---|---|---|
| committer | Adrian Holovaty <adrian@holovaty.com> | 2007-01-14 20:00:11 +0000 |
| commit | 32c367253a0b92933939abdd9a88535971de4155 (patch) | |
| tree | 9e6fc8664db5e29c33848a3e5dbb733e73dc268f | |
| parent | 815a0843bc50189776cc569aefb21c27a5c3ddcd (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.py | 8 | ||||
| -rw-r--r-- | django/contrib/admin/views/main.py | 38 |
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 |
