Well, I succeed using SQLAlchemy mapping events.
This code:
def on_models_committed(app, changes): for change in changes: foo_obj = change[0] operation = change[1] if foo_obj.__class__.__name__ == 'Foo': if operation == 'insert': foo_obj.foo_attr = get_new_value() db.session.add(foo_obj) db.session.commit() models_committed.connect(on_models_committed)
should be replaced with the following code:
def on_foo_created(mapper, connection, foo_obj): foo_obj.foo_attr = get_new_value() event.listen(Foo, 'before_insert', on_foo_created)
And the new import statement:
from flask.ext.sqlalchemy import event
bsmaniotto
source share