diff options
Diffstat (limited to 'ishtar_common/admin.py')
| -rw-r--r-- | ishtar_common/admin.py | 30 | 
1 files changed, 29 insertions, 1 deletions
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index 1edbd0f68..48847b804 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -874,13 +874,41 @@ class ExcludeFieldInline(admin.TabularInline):      formset = ExcludeFieldFormset +class JsonFieldFormset(BaseInlineFormSet): +    def get_form_kwargs(self, index): +        kwargs = super(JsonFieldFormset, self).get_form_kwargs(index) +        if not self.instance or not self.instance.pk: +            return kwargs +        kwargs['choices'] = [('', '--')] + \ +            self.instance.get_available_json_fields() +        return kwargs + + +class JsonFieldForm(forms.ModelForm): +    class Meta: +        model = models.CustomFormJsonField +        exclude = [] + +    def __init__(self, *args, **kwargs): +        choices = kwargs.pop('choices') +        super(JsonFieldForm, self).__init__(*args, **kwargs) +        self.fields['json_field'].choices = choices + + +class JsonFieldInline(admin.TabularInline): +    model = models.CustomFormJsonField +    extra = 2 +    form = JsonFieldForm +    formset = JsonFieldFormset + +  class CustomFormAdmin(admin.ModelAdmin):      list_display = ['name', 'form', 'available', 'enabled', 'apply_to_all',                      'users_lbl', 'user_types_lbl']      fields = ('name', 'form', 'available', 'enabled', 'apply_to_all', 'users',                'user_types')      form = CustomFormForm -    inlines = [ExcludeFieldInline] +    inlines = [ExcludeFieldInline, JsonFieldInline]      def get_inline_instances(self, request, obj=None):          # no inline on creation  | 
