Hi all, I have a strange behavior using MapperExtension before_update. I created two tables; anag and azi, azi have a foreign key to anag. When I try to change some column value on anag table the HistoryAnag.before_update is correctly triggered and it returns EXT_PASS, but when I try to change some column value on both tables the HistoryAnag.before_update is correctly triggered and it returns EXT_PASS then HistoryAzie.before_update is triggered but it stucks and it do not returns EXT_PASS, it goes in loop somewhere. I'm using SQLAlchemy 0.3.10 and turbogears 1.0.3.2
Is there someone experimenting some behavior? ----------------------------------------------------------------------------------- anag=Table('anag',database.metadata, Column('id', Integer, Sequence('anag_seq'), primary_key=True, nullable=False), Column('name', Unicode(200), nullable=False, index=True), Column('id_prec', Integer), Column('status', Unicode(1), PassiveDefault('A')) ) azi=Table('azi',database.metadata, Column('id', Integer, Sequence('azi_seq'), primary_key=True, nullable=False), Column('id_anag', Integer, nullable=False), Column('id_prec', Integer), Column('status', Unicode(1), PassiveDefault('A')), ForeignKeyConstraint(['id_anag'],['anag.id']) ) from sqlalchemy.orm import MapperExtension, EXT_PASS class HistoryAnag(MapperExtension): def __init__(self): MapperExtension.__init__(self) self.methods = ('before_update',) def before_update(self, mapper, connection, instance): from turbogears import identity rec = anag.select(anag.c.id == instance.anag_id).execute().fetchone() dd=dict(rec) dd.pop('id',None) dd['status'] = 'M' ret = anag.insert(values=dd).execute() lastid = ret.last_inserted_ids()[0] instance.anag_id_prec = lastid return EXT_PASS class Anag(): pass assign_mapper(context, Anag, anag, extension=HistoryAnag() ) class HistoryAzi(MapperExtension): def __init__(self): MapperExtension.__init__(self) self.methods = ('before_update',) def before_update(self, mapper, connection, instance): from turbogears import identity rec = azi.select(azi.c.id == instance.azi_id).execute().fetchone() dd=dict(rec) dd.pop('id',None) dd['status'] = 'M' ret = azi.insert(values=dd).execute() lastid = ret.last_inserted_ids()[0] instance.azi_id_prec = lastid return EXT_PASS class Azi(): pass assign_mapper(context, Azi, azi, extension=HistoryAzi() ) Thank you for any help. j --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---