Example #1
0
def validate(data, entity):
    """ Due to some fairly weird interdependencies between the different
    elements of the model, validation of entities has to happen in three
    steps. """

    # a bit hacky
    data['schemata'] = data.get('schemata', []) + ['base']

    validator = EntityBaseValidator()
    sane = validator.deserialize(data)
    
    schemata_validator = colander.SchemaNode(colander.Mapping())
    schemata_node = colander.SchemaNode(SchemaRef(sane.get('project')))
    schemata_validator.add(colander.SchemaNode(colander.Sequence(),
                           schemata_node, name='schemata'))

    sane['schemata'] = []
    ids = set()
    for schema in schemata_validator.deserialize(data).get('schemata'):
        if schema is None or schema.id in ids:
            continue
        ids.add(schema.id)
        sane['schemata'].append(schema)

    sane['properties'] = properties_logic.validate(
        'entity', entity, sane['schemata'], sane.get('project'),
        data.get('properties', []))
    return sane
Example #2
0
def validate(data, entity):
    """ Due to some fairly weird interdependencies between the different
    elements of the model, validation of entities has to happen in three
    steps. """

    # a bit hacky
    data['schemata'] = data.get('schemata', []) + [ENTITY_DEFAULT_SCHEMA]

    validator = EntityBaseValidator()
    sane = validator.deserialize(data)

    schemata_validator = colander.SchemaNode(colander.Mapping())
    schemata_node = colander.SchemaNode(SchemaRef(sane.get('project')))
    schemata_validator.add(
        colander.SchemaNode(colander.Sequence(),
                            schemata_node,
                            name='schemata'))

    sane['schemata'] = []
    ids = set()
    for schema in schemata_validator.deserialize(data).get('schemata'):
        if schema is None or schema.id in ids:
            continue
        ids.add(schema.id)
        sane['schemata'].append(schema)

    sane['properties'] = properties_logic.validate('entity', entity,
                                                   sane['schemata'],
                                                   sane.get('project'),
                                                   data.get('properties', []))
    return sane
Example #3
0
def validate(data, entity):
    """ Due to some fairly weird interdependencies between the different
    elements of the model, validation of entities has to happen in three
    steps. """
    validator = EntityBaseValidator()
    sane = validator.deserialize(data)
    project = sane.get('project')

    schema_validator = colander.SchemaNode(colander.Mapping())
    schema_validator.add(colander.SchemaNode(SchemaRef(project),
                                             name='schema'))
    sane.update(schema_validator.deserialize(data))

    sane['properties'] = properties_logic.validate('entity', entity, project,
                                                   sane.get('schema'),
                                                   data.get('properties', []))
    return sane
Example #4
0
def validate(data, entity):
    """ Due to some fairly weird interdependencies between the different
    elements of the model, validation of entities has to happen in three
    steps. """
    validator = EntityBaseValidator()
    sane = validator.deserialize(data)
    project = sane.get('project')

    schema_validator = colander.SchemaNode(colander.Mapping())
    schema_validator.add(colander.SchemaNode(SchemaRef(project),
                         name='schema'))
    sane.update(schema_validator.deserialize(data))

    sane['properties'] = properties_logic.validate('entity', entity,
                                                   project, sane.get('schema'),
                                                   data.get('properties', []))
    return sane
Example #5
0
def validate(data):
    """ Due to some fairly weird interdependencies between the different elements
    of the model, validation of relations has to happen in three steps. """

    validator = RelationBaseValidator()
    sane = validator.deserialize(data)
    project = sane.get("project")

    schema_validator = colander.SchemaNode(colander.Mapping())
    schema_validator.add(colander.SchemaNode(SchemaRef(project), name="schema"))
    schema_validator.add(colander.SchemaNode(EntityRef(project), name="source"))
    schema_validator.add(colander.SchemaNode(EntityRef(project), name="target"))

    sane.update(schema_validator.deserialize(data))

    sane["properties"] = properties_logic.validate(data.get("properties", []), [sane.get("schema")], name="properties")
    return sane
Example #6
0
def validate(data):
    """ Due to some fairly weird interdependencies between the different elements
    of the model, validation of entities has to happen in three steps. """

    # a bit hacky
    data['schemata'] = data.get('schemata', []) + ['base']

    validator = EntityBaseValidator()
    sane = validator.deserialize(data)
    
    schemata_validator = colander.SchemaNode(colander.Mapping())
    schemata_node = colander.SchemaNode(SchemaRef(sane.get('project')))
    schemata_validator.add(colander.SchemaNode(colander.Sequence(),
        schemata_node, name='schemata'))

    sane.update(schemata_validator.deserialize(data))
    sane['schemata'] = list(set(sane['schemata']))

    sane['properties'] = properties_logic.validate(
        data.get('properties', []),
        sane.get('schemata'),
        name='properties')
    return sane