Пытаюсь использовать подписку на событие after_update, для того чтобы вызывать функцию при изменение значение поля в базе данных, при изменении модели ListenTask, что я не правильно делаю или не понимаю?
При добавлении новой записи вызывается нужная функция.
class ListenTask(db.Model):
__table_args__ = {'schema': SCHEMA}
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(256), index=True, unique=True)
desc = db.Column(db.String(256), nullable=False)
status = db.Column(db.Boolean, default=False)
folder = db.Column(db.String(256), nullable=False)
id_email = db.Column(db.Integer, db.ForeignKey('{}.email_settings.id'.format(SCHEMA)))
id_owner = db.Column(db.Integer, db.ForeignKey('{}.user.id'.format(SCHEMA)))
id_spreadsheets = db.Column(db.Integer, db.ForeignKey('{}.spreadsheets.id'.format(SCHEMA)))
def __repr__(self):
return '<Listen {}>'.format(self.id)
@event.listens_for(ListenTask, 'after_insert')
def event_after_insert(mapper, connection, target):
# Здесь будет очень важная бизнес логика
print('event_after_insert: ', current_user)
print('target: ', target.id)
@event.listens_for(ListenTask, 'after_update')
def event_after_update(mapper, connection, target):
# Здесь будет очень важная бизнес логика
print('receive_after_update : ', current_user)
print('target: ', target.id)
@app.route('/update_task_status/<id>', methods=['GET', 'POST'])
@login_required
def update_task_status(id):
task_status = ListenTask.query.get(id).status
ListenTask.query.filter_by(id=id).update({'status': (not task_status)})
db.session.commit()
return redirect(url_for('room'))