def save(data, schema=None): """ Create a schema. """ schema_val = SchemaValidator(validator=check_attributes) data = schema_val.deserialize(data) if schema is None: schema = Schema() schema.name = data.get('name') schema.project = data.get('project') schema.label = data.get('label') schema.label_in = data.get('label_in') or schema.label schema.label_out = data.get('label_out') or schema.label schema.obj = data.get('obj') schema.hidden = data.get('hidden') schema.project.updated_at = datetime.utcnow() db.session.add(schema) names = [] for attribute in data.get('attributes', []): attribute['schema'] = schema attr = attributes.save(attribute) schema.attributes.append(attr) names.append(attr.name) for attr in schema.attributes: if attr.name not in names: attributes.delete(attr) return schema
def save(data, schema=None): """ Create a schema. """ schema_val = SchemaValidator(validator=check_attributes) data = schema_val.deserialize(data) if schema is None: schema = Schema() schema.name = data.get('name') schema.project = data.get('project') schema.label = data.get('label') schema.label_in = data.get('label_in') or schema.label schema.label_out = data.get('label_out') or schema.label schema.obj = data.get('obj') schema.hidden = data.get('hidden') schema.project.updated_at = datetime.utcnow() db.session.add(schema) names = [] for attribute in data.get('attributes', []): attribute['schema'] = schema attr = attributes.save(attribute) schema.attributes.append(attr) names.append(attr.name) for attr in schema.attributes: if attr.name not in names: db.session.delete(attr) return schema