diff options
| 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 | 
| commit | e3df0a079b7f377bbf302736a0fc3faeaac0cd34 (patch) | |
| tree | e1da1fbce3ef8228e0cce2c092accb1d64f795b2 /ishtar_common/admin.py | |
| parent | 7811ea2ab5bc31c66228d02e84ac2208be56b5e8 (diff) | |
| download | Ishtar-e3df0a079b7f377bbf302736a0fc3faeaac0cd34.tar.bz2 Ishtar-e3df0a079b7f377bbf302736a0fc3faeaac0cd34.zip | |
Json fields: register admin models for management (refs #3077)
Diffstat (limited to 'ishtar_common/admin.py')
| -rw-r--r-- | ishtar_common/admin.py | 51 | 
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'] | 
