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
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
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
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
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