ZPatterns Attribute Provider Problem
Hi everybody! I am trying to write some attribute provider for storing data inside an SQL table as I am bored of typing parameter lists over and over again (e.g. in every ZSQL method, in every SkinScript method etc.) The problem now is that adding a new row to the table (and thus adding a new object to the rack) is working well but updating an object does not. Basically the main problem is that _objectChanged is not called in my provider. What I did is the following: - If an attribute of the propsheet is changed, _SetAttributeFor is called and stores it into the cache (as I don't want to update the database for every attribute change). - _objectChanged is then supposed to create an sql query and execute it. This - as said - is actually not happening, as the whole method is not called. - My namesForRegistration looks like this: def namesForRegistration(self,container): """ return names for registration """ return { 'provides':('handlers','attributes'), 'getattr': self._attribs.keys(), 'setattr': self._attribs.keys(), 'delattr': self._attribs.keys() } with self._attribs containing the attributes my provider is responsible for. So is there any reason why _objectChanged is not called? Actually I am a bit confused when reading the ZPatterns source which should call it.. ;-) So which are the conditions under which it's supposed to be called? (_objectAdded() as said before is called actually..) I hope someone can help me :) cheers, Christian -- COM.lounge http://comlounge.net/ communication & design info@comlounge.net
Well, sorry for mailing to quickly, but removing _objectChanging() from my class solved the problem. My version simply wasn't setting the right status to the transaction. (though I think that I had a reason for adding it some time ago..) But maybe it's working now.. (but it seems so) -- christian On Mon, Apr 09, 2001 at 07:31:41PM +0200, Christian Scholz wrote:
Hi everybody!
I am trying to write some attribute provider for storing data inside an SQL table as I am bored of typing parameter lists over and over again (e.g. in every ZSQL method, in every SkinScript method etc.)
The problem now is that adding a new row to the table (and thus adding a new object to the rack) is working well but updating an object does not. Basically the main problem is that _objectChanged is not called in my provider.
What I did is the following:
- If an attribute of the propsheet is changed, _SetAttributeFor is called and stores it into the cache (as I don't want to update the database for every attribute change).
- _objectChanged is then supposed to create an sql query and execute it. This - as said - is actually not happening, as the whole method is not called.
- My namesForRegistration looks like this:
def namesForRegistration(self,container): """ return names for registration """ return { 'provides':('handlers','attributes'), 'getattr': self._attribs.keys(), 'setattr': self._attribs.keys(), 'delattr': self._attribs.keys() }
with self._attribs containing the attributes my provider is responsible for.
So is there any reason why _objectChanged is not called? Actually I am a bit confused when reading the ZPatterns source which should call it.. ;-) So which are the conditions under which it's supposed to be called? (_objectAdded() as said before is called actually..)
I hope someone can help me :)
cheers, Christian
-- COM.lounge http://comlounge.net/ communication & design info@comlounge.net
_______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )
-- COM.lounge http://comlounge.net/ communication & design info@comlounge.net
participants (1)
-
cs@comlounge.net