Exemple #1
0
 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)
Exemple #2
0
    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
Exemple #3
0
    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
Exemple #4
0
 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
Exemple #6
0
 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
Exemple #7
0
 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
Exemple #9
0
 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
Exemple #10
0
 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
Exemple #11
0
 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
Exemple #12
0
    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
Exemple #13
0
 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
Exemple #15
0
 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
Exemple #16
0
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
Exemple #17
0
 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
Exemple #19
0
 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
Exemple #20
0
 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
Exemple #21
0
    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
Exemple #22
0
 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
Exemple #23
0
 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)
Exemple #24
0
    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
Exemple #25
0
 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.')
Exemple #26
0
    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)
Exemple #27
0
 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
Exemple #28
0
 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
Exemple #29
0
    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
Exemple #30
0
 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
Exemple #31
0
 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