diff options
| -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'] | 
