Author: adrian
Date: 2007-01-14 14:00:11 -0600 (Sun, 14 Jan 2007)
New Revision: 4315

Modified:
  django/branches/newforms-admin/django/contrib/admin/urls.py
  django/branches/newforms-admin/django/contrib/admin/views/main.py
Log:
newforms-admin: Implemented model_admin_view() view and stub ModelAdminView 
class. Changed admin URLconf to point to model_admin_view().

Modified: django/branches/newforms-admin/django/contrib/admin/urls.py
===================================================================
--- django/branches/newforms-admin/django/contrib/admin/urls.py 2007-01-14 
18:42:33 UTC (rev 4314)
+++ django/branches/newforms-admin/django/contrib/admin/urls.py 2007-01-14 
20:00:11 UTC (rev 4315)
@@ -32,12 +32,8 @@
    # "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

Modified: django/branches/newforms-admin/django/contrib/admin/views/main.py
===================================================================
--- django/branches/newforms-admin/django/contrib/admin/views/main.py   
2007-01-14 18:42:33 UTC (rev 4314)
+++ django/branches/newforms-admin/django/contrib/admin/views/main.py   
2007-01-14 20:00:11 UTC (rev 4315)
@@ -105,6 +105,44 @@
                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


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Django 
updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to