def delete_collection(collection, keep_metadata=False, sync=False): cancel_queue(collection) aggregator = get_aggregator(collection) try: aggregator.drop() finally: aggregator.close() flush_notifications(collection, sync=sync) index.delete_entities(collection.id, sync=sync) xref_index.delete_xref(collection, sync=sync) deleted_at = collection.deleted_at or datetime.utcnow() Entity.delete_by_collection(collection.id, deleted_at=deleted_at) Mapping.delete_by_collection(collection.id, deleted_at=deleted_at) Diagram.delete_by_collection(collection.id, deleted_at=deleted_at) Document.delete_by_collection(collection.id) if not keep_metadata: # Considering linkages metadata for now, might be wrong: Linkage.delete_by_collection(collection.id) Permission.delete_by_collection(collection.id, deleted_at=deleted_at) collection.delete(deleted_at=deleted_at) db.session.commit() if not keep_metadata: index.delete_collection(collection.id, sync=True) Authz.flush() refresh_collection(collection.id, sync=True)
def delete_collection(collection, sync=False): flush_notifications(collection) collection.delete() db.session.commit() index.delete_collection(collection.id, sync=sync) delete_collection_content.apply_async([collection.id], priority=7) Authz.flush()
def delete_collection(collection, sync=False): flush_notifications(collection) collection.delete() db.session.commit() index.delete_collection(collection.id, sync=sync) delete_collection_content.apply_async([collection.id], priority=7) refresh_collection(collection.id) Authz.flush()
def delete_collection(collection, sync=False): reset_collection(collection, sync=False) flush_notifications(collection) deleted_at = collection.deleted_at or datetime.utcnow() Entity.delete_by_collection(collection.id, deleted_at=deleted_at) Document.delete_by_collection(collection.id) Permission.delete_by_collection(collection.id, deleted_at=deleted_at) collection.delete(deleted_at=deleted_at) db.session.commit() index.delete_collection(collection.id, sync=sync) Authz.flush()
def create_collection(data, role=None, sync=False): role = role or Role.load_cli_user() created_at = datetime.utcnow() collection = Collection.create(data, creator=role, created_at=created_at) publish(Events.CREATE_COLLECTION, params={'collection': collection}, actor_id=role.id) db.session.commit() Authz.flush() refresh_collection(collection.id) return index.index_collection(collection, sync=sync)
def create_collection(data, role=None, sync=False): role = role or Role.load_cli_user() created_at = datetime.utcnow() collection = Collection.create(data, role=role, created_at=created_at) if collection.created_at == created_at: publish(Events.CREATE_COLLECTION, actor_id=role.id, params={'collection': collection}) db.session.commit() Authz.flush() refresh_collection(collection.id) return index.index_collection(collection, sync=sync)
def delete_collection(collection, sync=False): flush_notifications(collection) drop_aggregator(collection) deleted_at = collection.deleted_at or datetime.utcnow() Entity.delete_by_collection(collection.id, deleted_at=deleted_at) Match.delete_by_collection(collection.id, deleted_at=deleted_at) Permission.delete_by_collection(collection.id, deleted_at=deleted_at) collection.delete(deleted_at=deleted_at) db.session.commit() index.delete_collection(collection.id, sync=sync) index.delete_entities(collection.id, sync=False) refresh_collection(collection.id) Authz.flush()
def delete_collection(collection, keep_metadata=False, sync=False): reset_collection(collection, sync=False) deleted_at = collection.deleted_at or datetime.utcnow() Entity.delete_by_collection(collection.id, deleted_at=deleted_at) Mapping.delete_by_collection(collection.id, deleted_at=deleted_at) Diagram.delete_by_collection(collection.id, deleted_at=deleted_at) Document.delete_by_collection(collection.id) if not keep_metadata: Permission.delete_by_collection(collection.id, deleted_at=deleted_at) collection.delete(deleted_at=deleted_at) db.session.commit() if not keep_metadata: index.delete_collection(collection.id, sync=sync) Authz.flush() refresh_collection(collection.id, sync=True)
def delete_collection(collection, keep_metadata=False, sync=False, reset_sync=False): reset_collection(collection, sync=reset_sync) deleted_at = collection.deleted_at or datetime.utcnow() Entity.delete_by_collection(collection.id, deleted_at=deleted_at) Mapping.delete_by_collection(collection.id, deleted_at=deleted_at) Diagram.delete_by_collection(collection.id, deleted_at=deleted_at) Document.delete_by_collection(collection.id) if not keep_metadata: # Considering this metadata for now, might be wrong: Linkage.delete_by_collection(collection.id) Permission.delete_by_collection(collection.id, deleted_at=deleted_at) collection.delete(deleted_at=deleted_at) db.session.commit() if not keep_metadata: index.delete_collection(collection.id, sync=sync) Authz.flush() refresh_collection(collection.id, sync=True)
def update_permission(role, collection, read, write, editor_id=None): """Update a roles permission to access a given collection.""" pre = Permission.by_collection_role(collection, role) post = Permission.grant(collection, role, read, write) params = {'role': role, 'collection': collection} if (pre is None or not pre.read) and post.read: if role.is_public: publish(Events.PUBLISH_COLLECTION, actor_id=editor_id, params=params, channels=[Notification.GLOBAL]) else: publish(Events.GRANT_COLLECTION, actor_id=editor_id, params=params) elif pre is not None and pre.read and not post.read: publish(Events.REVOKE_COLLECTION, actor_id=editor_id, params=params) db.session.commit() Authz.flush() return post
def delete_collection(collection, keep_metadata=False, sync=False): cancel_queue(collection) aggregator = get_aggregator(collection) aggregator.drop() flush_notifications(collection, sync=sync) index.delete_entities(collection.id, sync=sync) xref_index.delete_xref(collection, sync=sync) deleted_at = collection.deleted_at or datetime.utcnow() Mapping.delete_by_collection(collection.id) EntitySet.delete_by_collection(collection.id, deleted_at) Entity.delete_by_collection(collection.id) Document.delete_by_collection(collection.id) if not keep_metadata: Permission.delete_by_collection(collection.id) collection.delete(deleted_at=deleted_at) db.session.commit() if not keep_metadata: index.delete_collection(collection.id, sync=True) Authz.flush() refresh_collection(collection.id)
def update_permission(role, collection, read, write, editor_id=None): """Update a roles permission to access a given collection.""" pre = Permission.by_collection_role(collection, role) post = Permission.grant(collection, role, read, write) params = {'role': role, 'collection': collection} if (pre is None or not pre.read) and post.read: if role.foreign_id == Role.SYSTEM_GUEST: publish(Events.PUBLISH_COLLECTION, actor_id=editor_id, params=params, channels=[Notification.GLOBAL]) else: publish(Events.GRANT_COLLECTION, actor_id=editor_id, params=params, channels=[role]) db.session.commit() Authz.flush() refresh_role(role) return post
def update_permission(role, collection, read, write, editor_id=None): """Update a roles permission to access a given collection.""" pre = Permission.by_collection_role(collection, role) post = Permission.grant(collection, role, read, write) params = {'role': role, 'collection': collection} if (pre is None or not pre.read) and post.read: if role.is_public: publish(Events.PUBLISH_COLLECTION, actor_id=editor_id, params=params, channels=[Notification.GLOBAL]) else: publish(Events.GRANT_COLLECTION, actor_id=editor_id, params=params) elif pre is not None and pre.read and not post.read: publish(Events.REVOKE_COLLECTION, actor_id=editor_id, params=params) db.session.commit() Authz.flush() refresh_role(role) return post
def update_collection(collection, sync=False): """Update a collection and re-index.""" Authz.flush() refresh_collection(collection.id) return index.index_collection(collection, sync=sync)
def update_roles(): Authz.flush() for role in Role.all(): update_role(role)
def update_collection(collection, sync=False): """Create or update a collection.""" Authz.flush() refresh_collection(collection.id) return index.index_collection(collection, sync=sync)
def update_collection(collection, sync=False): """Create or update a collection.""" Authz.flush() refresh_collection(collection.id) return index.index_collection(collection, sync=sync)