Thread: [SQLObject] Inheritance and signals
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
From: David T. <no...@op...> - 2008-09-27 17:51:55
|
Depending on how attributes are set on child classes, rowupdatesignal fires either just on the base class, or on both the base and the child. This is inconsistent. from sqlobject import * from sqlobject.inheritance import InheritableSQLObject class Base(InheritableSQLObject): name = StringCol() def _set_name(self, new_name): print "base", new_name self._SO_set_name(new_name) class Child(Base): def _set_name(self, new_name): print "child", new_name self._SO_set_name(new_name) sqlhub.processConnection = connectionForURI('sqlite:/:memory:') Base.createTable() Child.createTable() def rowUpdateb(instance, kwargs): print "base signal", instance, kwargs def rowUpdatec(instance, kwargs): print "child signal", instance, kwargs events.listen(rowUpdateb, Base, events.RowUpdateSignal) events.listen(rowUpdatec, Child, events.RowUpdateSignal) c = Child(name="zero") c.name = "one" #once c.set(name="two") #twice ----------- results: base zero base one base signal <Base 1 name='zero'> {'name': 'one'} child signal <Child 1 name='one'> {'name': 'two'} base two base signal <Base 1 name='one'> {'name': 'two'} |
From: Oleg B. <ph...@ph...> - 2008-09-27 21:18:29
|
On Sat, Sep 27, 2008 at 01:51:45PM -0400, David Turner wrote: > Depending on how attributes are set on child classes, rowupdatesignal > fires either just on the base class, or on both the base and the child. > This is inconsistent. I suspect a subtle bug in SLObject._SO_setValue(). Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |
From: David T. <no...@op...> - 2008-09-28 22:01:23
Attachments:
make_row_update_events_consistent.diff
|
On Sun, 2008-09-28 at 00:51 +0400, Oleg Broytmann wrote: > On Sat, Sep 27, 2008 at 01:51:45PM -0400, David Turner wrote: > > Depending on how attributes are set on child classes, rowupdatesignal > > fires either just on the base class, or on both the base and the child. > > This is inconsistent. > > I suspect a subtle bug in SLObject._SO_setValue(). I have written a patch for this. Since I noticed the change in the inheritance system, that's where the test for it ended up going. If this is OK with you, I'll commit it. |
From: Oleg B. <ph...@ph...> - 2008-10-01 17:08:09
|
On Sun, Sep 28, 2008 at 06:01:24PM -0400, David Turner wrote: > I have written a patch for this. Since I noticed the change in the > inheritance system, that's where the test for it ended up going. If > this is OK with you, I'll commit it. Ok from me. It passed the test suite in the trunk. Are you going to backport it to 0.9 and 0.10? Actually I think the diff has been created against 0.10 - I had a minor problem applying in to the trunk. Oleg. -- Oleg Broytmann http://phd.pp.ru/ ph...@ph... Programmers don't die, they just GOSUB without RETURN. |