[Zope] Re: [Skinscript] unable to update property
Steve Spicklemire
steve@spvi.com
Sun, 14 Jan 2001 11:27:16 -0500 (EST)
Hi Dirksen,
I think that WHEN OBJECT CHANGED is used when some code tries to
change a DataSkin attribute and you need to update some external source.
So... an appropriate thing to do would be to call an SQL method, or
talk to another Specalist which needs to be notified .. etc. I think
that you may be 'double' chaning... e.g., some code tries to change
the transaction count... this fires a trigger that *also* tries to change
the same thing... hence the conflic error. Can you share the code
that is firing the trigger? (TransCount is used to keep track of
the shopper's 'current' transaction. In the current implementation
It is used to calculate a 'basked id' since each shopper can have
mulitiple baskets, as they return for more shopping later.. ) TransCount
should only be modified when a shopper completes a transaction and
they need a 'new' basket. Does that help?
-steve
>>>>> "Dirksen" == Dirksen <dirksen_lau@yahoo.com> writes:
Dirksen> Hi Steve,
Dirksen> I ran into a very tricky problem when developing a site
Dirksen> with emarket. Here is the structure of my site:
Dirksen> root |--acl_users(Membership product) |--emarket
Dirksen> |--shoppers
Dirksen> The acl_users is an instance of Membership product, which
Dirksen> is as a specialist as shoppers, and they both have a
Dirksen> WebIC_MemberClass zclass as their rack object class. The
Dirksen> difference is that, acl_users stores WebIC_MemberClass
Dirksen> persistently, while shoppers just reflects that
Dirksen> storage. Here is the skinscript for shopper's rack:
Dirksen> WITH acl_users.getItem(self.id) COMPUTE oo=RESULT
Dirksen> WITH self.oo COMPUTE email, transCount
Dirksen> WHEN OBJECT CHANGED STORE transCount USING
Dirksen> self.oo.propertysheets.webic.manage_changeProperties(transCount=self.transCount)
Dirksen> When emarket trying to increment a shopper's transCount,
Dirksen> I ran into a "ZODB.POSException.ConflictError". The
Dirksen> following is the traceback: Traceback (innermost last):
Dirksen> File C:\WebSite\lib\python\ZPublisher\Publish.py, line
Dirksen> 222, in publish_module File
Dirksen> C:\WebSite\lib\python\ZPublisher\Publish.py, line 199, in
Dirksen> publish File C:\WebSite\lib\python\ZPublisher\Publish.py,
Dirksen> line 199, in publish File
Dirksen> C:\WebSite\lib\python\ZPublisher\Publish.py, line 199, in
Dirksen> publish File C:\WebSite\lib\python\ZPublisher\Publish.py,
Dirksen> line 195, in publish File
Dirksen> C:\WebSite\lib\python\Zope\__init__.py, line 188, in
Dirksen> zpublisher_exception_hook (Object: ProviderContainer)
Dirksen> File C:\WebSite\lib\python\ZPublisher\Publish.py, line
Dirksen> 175, in publish File
Dirksen> C:\WebSite\lib\python\Zope\__init__.py, line 235, in
Dirksen> commit File C:\WebSite\lib\python\ZODB\Transaction.py,
Dirksen> line 251, in commit File
Dirksen> C:\WebSite\lib\python\ZODB\Connection.py, line 351, in
Dirksen> commit (Info: (('*hdVMVCvgk/wIgJaYf/nkEA==',
Dirksen> 'WebIC_MemberClass'), '\000\000\000\000\000\000d\357',
Dirksen> '')) File C:\WebSite\lib\python\ZODB\FileStorage.py, line
Dirksen> 664, in store (Object: C:\WebSite/var/Data.fs)
Dirksen> ConflictError: ('\0039\323C4=\266\210',
Dirksen> '\0039\323B\375\036\270U')
Dirksen> Is it something wrong with my skinscript?
Dirksen> cheers Dirksen
Dirksen> __________________________________________________ Do You
Dirksen> Yahoo!? Get email at your own domain with Yahoo! Mail.
Dirksen> http://personal.mail.yahoo.com/