Configuration¶
Types¶
Some configuration options for each different type can be set in the normal Django configuration.
JSONDATAFERRET_TYPE_INFORMATION = {
"type1": {
"json_schema": {...},
"spreadsheet_form_guide": "full filename"
},
"type2": {
"json_schema": {...},
"spreadsheet_form_guide": "full filename"
"fields": [...],
},
}
The key for each type (eg type1, type2) should match the public_id field in the Type record in the database.
JSON Schema¶
If this is set,
- Any data will be validated against the JSON Schema and any errors or success will be shown to the user in the Web UI.
- The user will be able to edit the data in a web browser using a JSON Schema widget.
The value should be the actual JSON Schema as a python dictionary. You will probably load it in the settings module.
with open(...) as fp:
org_json_schema = json.load(fp)
JSONDATAFERRET_TYPE_INFORMATION = {
"org": {
"json_schema": org_json_schema,
},
This is optional; if not set basic operations will still work.
Spreadsheet Guide Form¶
If this is set,
- The user will be able to download and import a spreadsheet in the Web UI.
The value should be the filename of the spreadsheet. Ideally make it a absolute filename.
See the documentation for the Spreadsheet forms library for more on guide forms.
This is optional; if not set basic operations will still work.
Fields¶
If this is set,
- The user will see a list of data from the JSON data presented as fields.
The value should be a list of python dictionaries.
If there is only one value in the data, the dictionary should look like:
{"key": "/project_name/value", "title": "Project Name (value)"},
The key should be the JSON path to the value and the title is what is shown to the user.
Where the data contains a list of dictionaries, you can also specify that. In this mode, you specify where the list is in the data then specify fields for each item in the list.
{
"type": "list",
"key": "/outcomes",
"title": "Outcomes",
"fields": [
{"key": "/outcome", "title": "Outcome"},
{"key": "/definition", "title": "Definition"},
],
},
This is optional; if not set basic operations will still work.