From a6d62ed63066634f1bfd400e4207a14c63873f5c Mon Sep 17 00:00:00 2001 From: Diederik van der Boor Date: Fri, 13 Jul 2012 10:59:35 +0200 Subject: [PATCH] Update the example app to demonstrate the polymorphic admin This really begs for a separate folder, but I leave that to a new commit for now. --- pexp/admin.py | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++ settings.py | 15 ++++++++---- urls.py | 10 ++++++++ 3 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 pexp/admin.py create mode 100644 urls.py diff --git a/pexp/admin.py b/pexp/admin.py new file mode 100644 index 0000000..5eb48fc --- /dev/null +++ b/pexp/admin.py @@ -0,0 +1,63 @@ +from django.contrib import admin +from polymorphic.admin import PolymorphicParentModelAdmin, PolymorphicChildModelAdmin +from pexp.models import * + + +class ProjectChildAdmin(PolymorphicChildModelAdmin): + base_model = Project + +class ProjectAdmin(PolymorphicParentModelAdmin): + base_model = Project + child_models = ( + (Project, ProjectChildAdmin), + (ArtProject, ProjectChildAdmin), + (ResearchProject, ProjectChildAdmin), + ) + +admin.site.register(Project, ProjectAdmin) + + + +class ModelAChildAdmin(PolymorphicChildModelAdmin): + base_model = ModelA + +class ModelAAdmin(PolymorphicParentModelAdmin): + base_model = ModelA + child_models = ( + (ModelA, ModelAChildAdmin), + (ModelB, ModelAChildAdmin), + (ModelC, ModelAChildAdmin), + ) + +admin.site.register(ModelA, ModelAAdmin) + + +if 'Model2A' in globals(): + class Model2AChildAdmin(PolymorphicChildModelAdmin): + base_model = Model2A + + class Model2AAdmin(PolymorphicParentModelAdmin): + base_model = Model2A + child_models = ( + (Model2A, Model2AChildAdmin), + (Model2B, Model2AChildAdmin), + (Model2C, Model2AChildAdmin), + ) + + admin.site.register(Model2A, Model2AAdmin) + + +if 'UUIDModelA' in globals(): + class UUIDModelAChildAdmin(PolymorphicChildModelAdmin): + base_model = UUIDModelA + + class UUIDModelAAdmin(PolymorphicParentModelAdmin): + base_model = UUIDModelA + child_models = ( + (UUIDModelA, UUIDModelAChildAdmin), + (UUIDModelB, UUIDModelAChildAdmin), + (UUIDModelC, UUIDModelAChildAdmin), + ) + + admin.site.register(UUIDModelA, UUIDModelAAdmin) + diff --git a/settings.py b/settings.py index 01e4ac4..ed43b51 100644 --- a/settings.py +++ b/settings.py @@ -77,9 +77,12 @@ MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', ) -ROOT_URLCONF = '' +ROOT_URLCONF = 'urls' +STATIC_URL = '/static/' +ADMIN_MEDIA_PREFIX = '/static/admin/' # 1.3 compatibility TEMPLATE_DIRS = ( # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". @@ -88,10 +91,14 @@ TEMPLATE_DIRS = ( ) INSTALLED_APPS = ( - #'django.contrib.auth', + 'django.contrib.auth', + 'django.contrib.admin', 'django.contrib.contenttypes', - #'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.sessions', + 'django.contrib.staticfiles', + #'django.contrib.sites', - 'polymorphic', # only needed if you want to use polymorphic_dumpdata + 'polymorphic', # needed if you want to use the polymorphic admin 'pexp', # this Django app is for testing and experimentation; not needed otherwise ) diff --git a/urls.py b/urls.py new file mode 100644 index 0000000..d54ec31 --- /dev/null +++ b/urls.py @@ -0,0 +1,10 @@ +from django.conf import settings +from django.conf.urls.defaults import patterns, include, url +from django.conf.urls.static import static +from django.contrib import admin + +admin.autodiscover() + +urlpatterns = patterns('', + url(r'^admin/', include(admin.site.urls)), +)