summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2013-10-27 17:53:23 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2013-10-27 17:54:15 +0100
commit8fe311d5e587fd185ec407c01895b91a23af1478 (patch)
tree60b665cd6baca62080215f649d0b38a378818b79
parent05ef969c988248f83660544a7e40954f1f13365b (diff)
downloadChimère-8fe311d5e587fd185ec407c01895b91a23af1478.tar.bz2
Chimère-8fe311d5e587fd185ec407c01895b91a23af1478.zip
Admin: only register model if not yet registered
This mecanism allow to specialized admin in projects
-rw-r--r--chimere/admin.py33
1 files changed, 21 insertions, 12 deletions
diff --git a/chimere/admin.py b/chimere/admin.py
index 3119b5d..b4ac5ce 100644
--- a/chimere/admin.py
+++ b/chimere/admin.py
@@ -416,7 +416,6 @@ class ImporterAdmin(admin.ModelAdmin):
list_filter = ('importer_type', 'categories')
readonly_fields = ('state',)
actions = [importing, cancel_import, export_to_osm, cancel_export]
-admin.site.register(Importer, ImporterAdmin)
class PageAdmin(admin.ModelAdmin):
"""
@@ -461,15 +460,25 @@ class PropertyModelChoiceInline(admin.TabularInline):
class PropertyModelAdmin(admin.ModelAdmin):
inlines = [PropertyModelChoiceInline]
-# register of differents database fields
-admin.site.register(Page, PageAdmin)
-admin.site.register(News, NewsAdmin)
-admin.site.register(Category, CategoryAdmin)
-admin.site.register(Icon, IconAdmin)
-admin.site.register(Marker, MarkerAdmin)
-admin.site.register(Route, RouteAdmin)
-if not settings.CHIMERE_HIDE_PROPERTYMODEL:
+# only register if not yet registered: this mecanism allow to specialized admin
+# in projects
+registered_models = admin.site._registry.keys()
+for model, modeladmin in ((Importer, ImporterAdmin),
+ (Page, PageAdmin),
+ (News, NewsAdmin),
+ (Category, CategoryAdmin),
+ (Icon, IconAdmin),
+ (Marker, MarkerAdmin),
+ (Route, RouteAdmin),
+ (Map, MapAdmin),
+ (ColorTheme, ColorThemeAdmin),
+ (Layer, None)):
+ if model not in registered_models:
+ if modeladmin:
+ admin.site.register(model, modeladmin)
+ else:
+ admin.site.register(model)
+
+if PropertyModel not in registered_models and \
+ not settings.CHIMERE_HIDE_PROPERTYMODEL:
admin.site.register(PropertyModel, PropertyModelAdmin)
-admin.site.register(Map, MapAdmin)
-admin.site.register(ColorTheme, ColorThemeAdmin)
-admin.site.register(Layer)