summaryrefslogtreecommitdiff
path: root/ishtar_common/admin.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-05-23 12:58:38 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-06-12 08:49:06 +0200
commit743b514bb132752ef87a21e759d35988ffd25229 (patch)
tree1e9650dcdfb9359e6c1a70031f7705d18700374d /ishtar_common/admin.py
parenta1ac66c283e12aed6264fb16f99a6daa2f1d5b88 (diff)
downloadIshtar-743b514bb132752ef87a21e759d35988ffd25229.tar.bz2
Ishtar-743b514bb132752ef87a21e759d35988ffd25229.zip
Wizards - JSON fields: inlines for custom form in admin pages (refs #4089)
Diffstat (limited to 'ishtar_common/admin.py')
-rw-r--r--ishtar_common/admin.py30
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