Ejemplo n.º 1
0
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),
    }
Ejemplo n.º 2
0
    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,
        }
Ejemplo n.º 3
0
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),
    }
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
 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)