def create(slug): """ Create a new entity. """ network = _get_network(slug) require.entity.create(network) data = request_content(request) context = ValidationContext(network=network) schema = _get_schema(network, data.get('type')) data = validate_entity(dict(data.items()), schema, context) entity = network.Entity.create(schema, data) _deep_create(data, entity, network) db.session.commit() url = url_for('.get', slug=network.slug, id=entity.id) return jsonify(entity, status=201, headers={'location': url})
def update(slug, id): """ Update the data of the entity. """ network, entity = _get_entity(slug, id) require.entity.update(network, entity) data = dict(request_content(request).items()) data['type'] = entity.type context = ValidationContext(network=network) schema = _get_schema(network, data.get('type')) data = validate_entity(data, schema, context) updated_entity = entity.update(schema, data) _deep_create(data, updated_entity, network) db.session.commit() return jsonify(updated_entity, status=202)