summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-10-17 18:29:02 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-10-17 18:29:02 +0200
commite3df0a079b7f377bbf302736a0fc3faeaac0cd34 (patch)
treee1da1fbce3ef8228e0cce2c092accb1d64f795b2
parent7811ea2ab5bc31c66228d02e84ac2208be56b5e8 (diff)
downloadIshtar-e3df0a079b7f377bbf302736a0fc3faeaac0cd34.tar.bz2
Ishtar-e3df0a079b7f377bbf302736a0fc3faeaac0cd34.zip
Json fields: register admin models for management (refs #3077)
-rw-r--r--ishtar_common/admin.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index fbd9f4d29..aa323dc5f 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -27,6 +27,7 @@ from django.conf import settings
from django.contrib import admin
from django.contrib.auth.admin import GroupAdmin, UserAdmin
from django.contrib.auth.models import Group, User
+from django.contrib.contenttypes.models import ContentType
from django.contrib.sites.admin import SiteAdmin
from django.contrib.sites.models import Site
from django.contrib.gis.forms import PointField, OSMWidget
@@ -356,6 +357,56 @@ class ItemKeyAdmin(admin.ModelAdmin):
admin_site.register(models.ItemKey, ItemKeyAdmin)
+class JsonContentTypeFormMixin(object):
+ class Meta:
+ model = models.JsonDataSection
+ exclude = []
+
+ def __init__(self, *args, **kwargs):
+ super(JsonContentTypeFormMixin, self).__init__(*args, **kwargs)
+ choices = []
+ for pk, label in self.fields['content_type'].choices:
+ if not pk:
+ choices.append((pk, label))
+ continue
+ ct = ContentType.objects.get(pk=pk)
+ model_class = ct.model_class()
+ if hasattr(model_class, 'data') and \
+ not hasattr(model_class, 'history_type'):
+ choices.append((pk, label))
+ self.fields['content_type'].choices = sorted(choices,
+ key=lambda x: x[1])
+
+
+class JsonDataSectionForm(JsonContentTypeFormMixin, forms.ModelForm):
+ class Meta:
+ model = models.JsonDataSection
+ exclude = []
+
+
+class JsonDataSectionAdmin(admin.ModelAdmin):
+ list_display = ['name', 'content_type', 'order']
+ form = JsonDataSectionForm
+
+
+admin_site.register(models.JsonDataSection, JsonDataSectionAdmin)
+
+
+class JsonDataFieldForm(JsonContentTypeFormMixin, forms.ModelForm):
+ class Meta:
+ model = models.JsonDataField
+ exclude = []
+
+
+class JsonDataFieldAdmin(admin.ModelAdmin):
+ list_display = ['name', 'content_type', 'key', 'display',
+ 'order', 'section']
+ form = JsonDataFieldForm
+
+
+admin_site.register(models.JsonDataField, JsonDataFieldAdmin)
+
+
class AdministrationScriptAdmin(admin.ModelAdmin):
list_display = ['name', 'path']