def get_jsonschema_for_controlpanel(controlpanel, context, request): """Build a complete JSON schema for the given controlpanel. """ schema = controlpanel.schema fieldsets = utils.get_fieldsets(context, request, schema) # Build JSON schema properties properties = utils.get_jsonschema_properties(context, request, fieldsets) # Determine required fields required = [] for field in utils.iter_fields(fieldsets): if field.field.required: required.append(field.field.getName()) # Include field modes for field in utils.iter_fields(fieldsets): if field.mode: properties[field.field.getName()]["mode"] = field.mode return { "type": "object", "properties": properties, "required": required, "fieldsets": utils.get_fieldset_infos(fieldsets), }
def get_jsonschema_for_talk_proposal(self, schema): fieldsets = utils.get_fieldsets(self.context, self.request, schema) schema_fieldsets = utils.get_fieldset_infos(fieldsets) # Build JSON schema properties properties = utils.get_jsonschema_properties(self.context, self.request, fieldsets) properties['image'] = { "type": "string", "format": "data-url", "title": _("Image"), "description": _("Add your profile image here."), } # add image before privacy schema_fieldsets[0]['fields'].insert( len(schema_fieldsets[0]['fields']) - 1, 'image') # Determine required fields required = [] for field in utils.iter_fields(fieldsets): if field.field.required: required.append(field.field.getName()) # Include field modes for field in utils.iter_fields(fieldsets): if field.mode: properties[field.field.getName()]['mode'] = field.mode return { 'type': 'object', 'properties': properties, 'required': required, 'fieldsets': schema_fieldsets, }
def get_jsonschema_for_tile(tile, context, request): """Build a complete JSON schema for the given tile. """ schema = tile.schema fieldsets = utils.get_fieldsets(context, request, schema) # Build JSON schema properties properties = utils.get_jsonschema_properties(context, request, fieldsets) # Determine required fields required = [] for field in utils.iter_fields(fieldsets): if field.field.required: required.append(field.field.getName()) # Include field modes for field in utils.iter_fields(fieldsets): if field.mode: properties[field.field.getName()]['mode'] = field.mode return { 'type': 'object', 'title': tile.title, 'properties': properties, 'required': required, 'fieldsets': utils.get_fieldset_infos(fieldsets), }
def test_get_jsonschema_properties(self): fieldsets = get_fieldsets(self.portal, self.request, IDummySchema) info = get_jsonschema_properties(self.portal, self.request, fieldsets) expected = { "field1": {"title": u"Foo", "description": u"", "type": "boolean"}, "field2": {"title": u"Bar", "description": u"", "type": "string"}, } self.assertEqual(info, expected)
def get_properties(self): if self.prefix: prefix = ".".join([self.prefix, self.field.__name__]) else: prefix = self.field.__name__ context = self.context request = self.request fieldsets = get_fieldsets(context, request, self.field.schema) return get_jsonschema_properties(context, request, fieldsets, prefix)
def test_get_jsonschema_properties(self): fieldsets = get_fieldsets(self.portal, self.request, IDummySchema) info = get_jsonschema_properties(self.portal, self.request, fieldsets) expected = { 'field1': { 'title': u'Foo', 'description': u'', 'type': 'boolean' }, 'field2': { 'title': u'Bar', 'description': u'', 'type': 'string' }, } self.assertEqual(info, expected)