Skip to content

Commit 10fb2f0

Browse files
committed
Added default_options parameter.
This will set default options on the whole JSON Editor. Useful for doing things like setting disable_properties to True, see example.
1 parent 3c9ae4e commit 10fb2f0

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

django_admin_json_editor/admin.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@
99
class JSONEditorWidget(forms.Widget):
1010
template_name = 'django_admin_json_editor/editor.html'
1111

12-
def __init__(self, schema, collapsed=True, sceditor=False, schema_choices=False, schema_choice_field_name=False):
12+
def __init__(self, schema, collapsed=True, sceditor=False, schema_choices=False, schema_choice_field_name=False, default_options=False):
1313
super(JSONEditorWidget, self).__init__()
1414
self._schema = schema
1515
self._collapsed = collapsed
1616
self._sceditor = sceditor
1717
self._schema_choices = schema_choices
1818
self._schema_choice_field_name = schema_choice_field_name
19+
self._default_options = default_options if default_options else {}
1920

2021
if schema_choices and schema_choice_field_name:
2122
if type(schema_choices) != dict:
@@ -25,6 +26,9 @@ def __init__(self, schema, collapsed=True, sceditor=False, schema_choices=False,
2526
elif (schema_choices and not schema_choice_field_name) or (schema_choice_field_name and not schema_choices):
2627
raise AttributeError("schema_choices and schema_choice_field_name must be supplied together.")
2728

29+
if default_options and type(default_options) != dict:
30+
raise TypeError("default_options must be a dict, but type of \"%s\" was given" % type(default_options))
31+
2832
def render(self, name, value, attrs=None, renderer=None):
2933
if callable(self._schema):
3034
schema = self._schema(self)
@@ -51,7 +55,8 @@ def render(self, name, value, attrs=None, renderer=None):
5155
'data': value,
5256
'sceditor': int(self._sceditor),
5357
'schema_choices': schema_choices,
54-
'schema_choice_field_name': self._schema_choice_field_name
58+
'schema_choice_field_name': self._schema_choice_field_name,
59+
'default_options': self._default_options
5560
}
5661
return mark_safe(render_to_string(self.template_name, context))
5762

django_admin_json_editor/templates/django_admin_json_editor/editor.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
var {{ name }}_editor;
1414

1515
function {{ name }}_init(container, options) {
16+
JSONEditor.defaults.options = {{ default_options|json_dumps }};
1617
{{ name }}_editor = new JSONEditor(container, options);
1718
JSONEditor.plugins.sceditor.emoticonsEnabled = {{ sceditor }};
1819
{{ name }}_editor.on('change', function () {

example/app/admin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,8 @@ def get_form(self, request, obj=None, **kwargs):
209209
except KeyError:
210210
pass
211211
data_widget = JSONEditorWidget(default_schema, collapsed=False, sceditor=False,
212-
schema_choices=DATA_SCHEMA_CHOICES, schema_choice_field_name="category")
212+
schema_choices=DATA_SCHEMA_CHOICES, schema_choice_field_name="category",
213+
default_options={"disable_properties": True})
213214
form = super().get_form(request, obj, widgets={'data': data_widget}, **kwargs)
214215
return form
215216

0 commit comments

Comments
 (0)