def after_commit(cls, session): for obj in session._changes.get('add', []): add_to_index(cls.__tablename__, obj) for obj in session._changes.get('update', []): add_to_index(cls.__tablename__, obj) for obj in session._changes.get('delete', []): remove_from_index(cls.__tablename__, obj)
def after_commit(cls, session): """ Update elasticsearch index to mirror changes made to db during session. Params cls (obj) Replacement for the `self` keyword. Emphasizes that this is a class method and therefore only receives a class as an argument (and not a class instance). session (???) SQLAlchemy session object. Records changes intended to be made to the db. Side-Effects Elasticsearch object attached to app Mutated to mirror changes made to the db during the session. session._changes Set to None Returns None """ for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): """ Class method to make changes on the Elasticsearch side, i.e. to call the corresponding indexing function depending on the case (add, modify or delete) :param cls: a class :type cls: class :param session: a session :type session: .. :return: nothing :rtype: None """ for obj in session._changes["add"]: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes["update"]: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes["delete"]: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): for obj in session._changes['add']: add_to_index(cls.__tablename__, obj) for obj in session._changes['update']: add_to_index(cls.__tablename__, obj) for obj in session._changes['delete']: remove_from_index(cls.__tablename__, obj) session._changes = None
def after_commit(cls, session): for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): # 在提交成功后,是合适的时间把之前提交的修改同步到ES for obj in session._changes['add']: add_to_index(cls.__tablename__, obj) for obj in session._changes['update']: add_to_index(cls.__tablename__, obj) for obj in session._changes['delete']: remove_from_index(cls.__tablename__, obj) session._changes = None
def after_commit(cls, session): for obj in session._changes['add']: add_to_index(cls.__tablename__, obj) for obj in session._changes[ 'update']: # modified post overwrites original post in Elasticsearch db add_to_index(cls.__tablename__, obj) for obj in session._changes['delete']: remove_from_index(cls.__tablename__, obj) session._changes = None # resets the dictionary - which survived the commit - to None
def after_commit(cls, session): """会话提交后,根据记录的变更同步elasticsearch""" for obj in session._changes['add']: add_to_index(cls.__tablename__, obj) for obj in session._changes['update']: add_to_index(cls.__tablename__, obj) for obj in session._changes['delete']: remove_from_index(cls.__tablename__, obj) session._changes = None
def after_commit(cls, session): """来自SQLAlchemy事件,通过事件驱动es更新索引""" for obj in session._changes['add']: add_to_index(cls.__tablename__, obj) for obj in session._changes['update']: add_to_index(cls.__tablename__, obj) for obj in session._changes['delete']: remove_from_index(cls.__tablename__, obj) session._changes = None
def after_commit(cls, session): # Triggered thanks to SQLAlchemy events, after a commit is performed. for obj in session._changes['add']: add_to_index(cls.__tablename__, obj) for obj in session._changes['update']: add_to_index(cls.__tablename__, obj) for obj in session._changes['delete']: remove_from_index(cls.__tablename__, obj) session._changes = None
def after_commit(cls, session): # uses objects in before_commit to update Elasticsearch index for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): """Update the search engine database after committing changes to the SQLAlchemy database""" for obj in session._changes['add']: add_to_index(cls.__tablename__, obj) for obj in session._changes['update']: add_to_index(cls.__tablename__, obj) for obj in session._changes['delete']: remove_from_index(cls.__tablename__, obj) session._changes = None
def after_commit(cls, session): for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): for obj in session._changes["add"]: if isinstance(obj, SearchableMixin): search.add_to_index(obj.__tablename__, obj) for obj in session._changes["update"]: if isinstance(obj, SearchableMixin): search.add_to_index(obj.__tablename__, obj) for obj in session._changes["delete"]: if isinstance(obj, SearchableMixin): search.remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): # 在事务提交发生之后 # session对象具有before_commit()中添加的_changes变量,所以现在我可以迭代需要被添加,修改和删除的对象,并对app/search.py中的索引函数进行相应的调用。 for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def delete_group(groupid): groupname = GroupTable.query.filter_by(id=groupid).first().groupname GroupMembers.query.filter_by(group_id=groupid).delete() messages = Message.query.filter_by(group_id=groupid).all() for message in messages: remove_from_index('message', message) Message.query.filter_by(group_id=groupid).delete() group = GroupTable.query.filter_by(id=groupid).first() remove_from_index('group_table', group) GroupTable.query.filter_by(id=groupid).delete() db.session.commit() return groupname
def after_commit(cls, session): """update elasticsearch index based on session changes""" for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): for obj in session._changes['add']: #Add each record if it belongs to a class that inherits SearchableMixin if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): if not current_app.elasticsearch: # or any other search engine, which you'll use return for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): """ 一旦会话被提交,我将使用它们来更新Elasticsearch索引。 :param session: :return: """ for obj in session._changes['add']: add_to_index(cls.__tablename__, obj) for obj in session._changes['update']: add_to_index(cls.__tablename__, obj) for obj in session._changes['delete']: remove_from_index(cls.__tablename__, obj) session._changes = None
def after_commit(cls, session): for x in session._changes['add']: if isinstance(x, SearchableMixin): add_to_index(x.__tablename__, x) for x in session._changes['update']: if isinstance(x, SearchableMixin): add_to_index(x.__tablename__, x) for x in session._changes['delete']: if isinstance(x, SearchableMixin): remove_from_index(x.__tablename__, x) session._changes = None
def after_commit(cls, session): """records all the committed changes to elasticsearch""" for obj in session._changes[ 'add']: #fetches _changes object from before_commit function and adds it to the index. if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): for obj in session._changes['add']: if isinstance(obj, cls): add_to_index(cls.__tablename__, obj) session._changes['add'].remove(obj) for obj in session._changes['update']: if isinstance(obj, cls): add_to_index(cls.__tablename__, obj) session._changes['update'].remove(obj) for obj in session._changes['delete']: if isinstance(obj, cls): remove_from_index(cls.__tablename__, obj) session._changes['delete'].remove(obj)
def after_commit(cls, session): """ add accepted changes in database to Elasticsearch :param session: I guess current db session but actually this is Miguel Grinberg's code so I am not sure :return: None """ for obj in session._changes['add']: add_to_index(cls.__tablename__, obj) for obj in session._changes['update']: add_to_index(cls.__tablename__, obj) for obj in session._changes['delete']: remove_from_index(cls.__tablename__, obj) session._changes = None
def after_commit(cls, session): try: for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj.SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None except Exception as error: flash(f'Search server not running.')
def after_commit(cls, session): for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None @classmethod def reindex(cls): for obj in cls.query: add_to_index(cls.__tablename__, obj)
def before_commit(cls, session): session._changes = { 'add': list(session.new), 'update': list(session.dirty), 'delete': list(session.deleted) } for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): ''' Called when the after_commit event is emitted by SQLAlchemy. Session was committed, so make similar changes to Elasticsearch to keep them in sync. ''' # Use the session changes recorded during before_commit() for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): ''' Iterate over the added, modified and deleted objects and make the corresponding calls to the indexing functions for the objects that have the SearchableMixin class. ''' for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj, __tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): """ Method will respond to SQLAlchemy event triggered after a commit takes place. After successful commit, we update the Elasticsearch index with changes saved in before_commit. """ for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None
def after_commit(cls, session): for obj in session._changes['add']: if isinstance(obj, SearchableMixin): add_to_index(obj.__tablename__, obj) for obj in session._changes['update']: if isinstance(obj, SearchableMixin): if isinstance(obj, BaseIsActiveMixin): if obj.is_active == IsActive.F: remove_from_index(obj.__tablename__, obj) else: add_to_index(obj.__tablename__, obj) else: add_to_index(obj.__tablename__, obj) for obj in session._changes['delete']: if isinstance(obj, SearchableMixin): remove_from_index(obj.__tablename__, obj) session._changes = None