def update(id): entity = obj_or_404(Entity.by_id(id)) authz.require(authz.collection_write(entity.collection_id)) data = request_data() collection = data.get('collection') authz.require(collection) authz.require(authz.collection_write(collection.id)) entity.update(data) collection.touch() db.session.commit() analyze_entity.delay(entity.id) return view(entity.id)
def delete(id): entity = obj_or_404(Entity.by_id(id)) authz.require(authz.collection_write(entity.collection_id)) entity.delete() db.session.commit() analyze_entity.delay(id) return jsonify({'status': 'ok'})
def ingest_upload(collection_id): collection = obj_or_404(Collection.by_id(collection_id)) authz.require(authz.collection_write(collection.id)) log_event(request) try: meta = json.loads(request.form.get('meta', '{}')) except Exception as ex: raise BadRequest(unicode(ex)) metas = [] for storage in request.files.values(): file_meta = meta.copy() file_meta['mime_type'] = storage.mimetype file_meta['file_name'] = storage.filename validate(file_meta, 'metadata.json#') file_meta = Metadata.from_data(file_meta) file_meta.crawler_id = 'user_upload:%s' % request.auth_role.id file_meta.crawler_run = make_textid() sec_fn = os.path.join(get_upload_folder(), secure_filename(storage.filename)) storage.save(sec_fn) ingest_file(collection.id, file_meta, sec_fn, move=True, queue=USER_QUEUE, routing_key=USER_ROUTING_KEY) metas.append(file_meta) return jsonify({'status': 'ok', 'metadata': metas})
def delete(id): collection = obj_or_404(Collection.by_id(id)) authz.require(authz.collection_write(id)) delete_collection.apply_async([collection.id], queue=USER_QUEUE, routing_key=USER_ROUTING_KEY) log_event(request) return jsonify({'status': 'ok'})
def update(id): authz.require(authz.collection_write(id)) collection = obj_or_404(Collection.by_id(id)) collection.update(request_data()) db.session.add(collection) db.session.commit() return view(id)
def delete(id): authz.require(authz.collection_write(id)) collection = obj_or_404(Collection.by_id(id)) analyze_terms.delay(collection.terms) collection.delete() db.session.commit() return jsonify({'status': 'ok'})
def create(collection_id): collection = obj_or_404(Collection.by_id(collection_id)) authz.require(authz.collection_write(collection.id)) network = Network.create(request_data(), collection, request.auth_role) db.session.commit() log_event(request) return view(collection_id, network.id)
def delete(collection_id, id): collection = obj_or_404(Collection.by_id(collection_id)) authz.require(authz.collection_write(collection.id)) network = obj_or_404(Network.by_id_collection(id, collection)) network.delete() db.session.commit() log_event(request) return jsonify({'status': 'ok'})
def update(collection_id, id): collection = obj_or_404(Collection.by_id(collection_id)) authz.require(authz.collection_write(collection_id)) network = obj_or_404(Network.by_id_collection(id, collection)) network.update(request_data()) log_event(request) db.session.commit() return view(collection_id, network.id)
def delete(id): collection = obj_or_404(Collection.by_id(id)) authz.require(authz.collection_write(id)) collection.delete() for entity in collection.entities: update_entity(entity) db.session.commit() return jsonify({'status': 'ok'})
def permissions_index(collection): authz.require(authz.collection_write(collection)) q = Permission.all() q = q.filter(Permission.collection_id == collection) return jsonify({ 'total': q.count(), 'results': q })
def delete(id): collection = obj_or_404(Collection.by_id(id)) authz.require(authz.collection_write(id)) # TODO: race condition-ish... for entity in collection.entities: analyze_entity.delay(entity.id) collection.delete() db.session.commit() return jsonify({'status': 'ok'})
def collection_permissions_index(collection=None): authz.require(authz.collection_write(collection)) q = Permission.all() q = q.filter(Permission.resource_type == Permission.COLLECTION) q = q.filter(Permission.resource_id == collection) return jsonify({ 'total': q.count(), 'results': q })
def create(): data = request_data() data.pop('id', None) data['collections'] = get_collections(data) for collection in data['collections']: authz.require(authz.collection_write(collection.id)) entity = Entity.save(data) db.session.commit() update_entity(entity) return view(entity.id)
def get_data(entity=None): data = request_data() collection_id = data.get('collection_id') collection_id = entity.collection_id if entity else collection_id authz.require(authz.collection_write(collection_id)) if entity is not None: data['id'] = entity.id else: data.pop('id', None) return data
def create(): data = request_data() collection = data.get('collection') authz.require(collection) authz.require(authz.collection_write(collection.id)) entity = Entity.create(data) collection.touch() db.session.commit() analyze_entity.delay(entity.id) return view(entity.id)
def update(document_id): document = get_document(document_id) # This is a special requirement for documents, so # they cannot escalate privs: authz.require(authz.collection_write(document.source_collection_id)) data = request_data() document.update(data, writeable=authz.collections(authz.WRITE)) db.session.commit() log_event(request, document_id=document.id) update_document(document) return view(document_id)
def permissions_update(collection): authz.require(authz.collection_write(collection)) data = request_data() validate(data, "permission.json#") role = Role.all().filter(Role.id == data["role"]).first() if role is None: raise BadRequest() permission = Permission.grant_collection(collection, role, data["read"], data["write"]) db.session.commit() log_event(request) return jsonify({"status": "ok", "updated": permission})
def permissions_update(collection): authz.require(authz.collection_write(collection)) data = request_data() validate(data, 'permission.json#') role = Role.all().filter(Role.id == data['role']).first() if role is None: raise BadRequest() permission = Permission.grant_collection(collection.id, role, data['read'], data['write']) db.session.commit() return jsonify({'status': 'ok', 'updated': permission})
def create(): data = request_data() data.pop('id', None) collections = get_collections(data) for collection in collections: authz.require(authz.collection_write(collection.id)) entity = Entity.save(data, collections) for collection in entity.collections: collection.touch() db.session.commit() log_event(request, entity_id=entity.id) update_entity(entity) return view(entity.id)
def create(): data = request_data() data.pop("id", None) collections = get_collections(data) for collection in collections: authz.require(authz.collection_write(collection.id)) try: entity = Entity.save(data, collections) except ValueError as ve: raise BadRequest(ve.message) for collection in entity.collections: collection.touch() db.session.commit() log_event(request, entity_id=entity.id) update_entity(entity) return view(entity.id)
def permissions_update(collection): authz.require(authz.collection_write(collection)) data = request_data() validate(data, 'permission.json#') role = Role.all().filter(Role.id == data['role']).first() if role is None: raise BadRequest() permission = Permission.grant_collection(collection.id, role, data['read'], data['write']) db.session.commit() return jsonify({ 'status': 'ok', 'updated': permission })
def permissions_save(collection=None, source=None): if collection is not None: authz.require(authz.collection_write(collection)) if source is not None: authz.require(authz.source_write(source)) resource_type = Permission.COLLECTION if collection else Permission.SOURCE resource_id = collection or source data = request_data() validate(data, 'permission.json#') role = Role.all().filter(Role.id == data['role']).first() if role is None: raise BadRequest() permission = Permission.grant_resource(resource_type, resource_id, role, data['read'], data['write']) db.session.commit() return jsonify({'status': 'ok', 'updated': permission})
def ingest_upload(collection_id): collection = obj_or_404(Collection.by_id(collection_id)) authz.require(authz.collection_write(collection.id)) log_event(request) try: meta = json.loads(request.form.get("meta", "{}")) except Exception as ex: raise BadRequest(unicode(ex)) metas = [] for storage in request.files.values(): file_meta = meta.copy() file_meta["mime_type"] = storage.mimetype file_meta["file_name"] = storage.filename validate(file_meta, "metadata.json#") file_meta = Metadata.from_data(file_meta) file_meta.crawler_id = "user_upload:%s" % request.auth_role.id file_meta.crawler_run = make_textid() sec_fn = os.path.join(get_upload_folder(), secure_filename(storage.filename)) storage.save(sec_fn) ingest_file(collection.id, file_meta, sec_fn, move=True) metas.append(file_meta) return jsonify({"status": "ok", "metadata": metas})
def process(id): authz.require(authz.collection_write(id)) collection = obj_or_404(Collection.by_id(id)) analyze_collection.delay(collection.id) log_event(request) return jsonify({'status': 'ok'})
def delete(id): collection = obj_or_404(Collection.by_id(id)) authz.require(authz.collection_write(id)) delete_collection.delay(collection.id) return jsonify({'status': 'ok'})
def delete(id): collection = obj_or_404(Collection.by_id(id)) authz.require(authz.collection_write(id)) collection.delete() db.session.commit() return jsonify({'status': 'ok'})
def permissions_index(collection): authz.require(authz.collection_write(collection)) q = Permission.all() q = q.filter(Permission.collection_id == collection) return jsonify({'total': q.count(), 'results': q})
def process(id): authz.require(authz.collection_write(id)) collection = obj_or_404(Collection.by_id(id)) analyze_collection.delay(collection.id) return jsonify({'status': 'ok'})
def delete(id): collection = obj_or_404(Collection.by_id(id)) authz.require(authz.collection_write(id)) delete_collection.delay(collection.id) log_event(request) return jsonify({'status': 'ok'})