[Product-Developers] object unique id / cmf_uid not a string

Christoph Pingel pingelsan at googlemail.com
Wed Jun 27 12:01:42 UTC 2012


I'm on Plone 4.1.4 (Zope 2.13.13).

In a product, I have an 'alias' mechanism in place, where a content object is made 'dependent' on another object (via a reference), and whenever the 'master' object is edited, its field values are stored in the 'slave' object as well.
Now, there are two issues here plone-wise:

- The content of richtext fields is not stored in the 'slave' correctly. It seems that only the base string ever reaches the slave, while the automatically generated markup remains only in the master. Am I right to assume that TinyMCE sends its contents to the object *after* at_post_edit_script has been called?

- After the slave object recieved its values from the master for the first time, it can't be saved any more. 
I get an error like this:

Traceback (innermost last):
  Module ZPublisher.Publish, line 126, in publish
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 46, in call_object
  Module Products.CMFFormController.FSControllerPageTemplate, line 91, in __call__
  Module Products.CMFFormController.BaseControllerPageTemplate, line 28, in _call
  Module Products.CMFFormController.ControllerBase, line 231, in getNext
  Module Products.CMFFormController.Actions.TraverseTo, line 38, in __call__
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 46, in call_object
  Module Products.CMFFormController.FSControllerPythonScript, line 107, in __call__
  Module Products.CMFFormController.ControllerBase, line 231, in getNext
  Module Products.CMFFormController.Actions.TraverseTo, line 38, in __call__
  Module ZPublisher.mapply, line 77, in mapply
  Module ZPublisher.Publish, line 46, in call_object
  Module Products.CMFFormController.FSControllerPythonScript, line 105, in __call__
  Module Products.CMFFormController.Script, line 145, in __call__
  Module Products.CMFCore.FSPythonScript, line 127, in __call__
  Module Shared.DC.Scripts.Bindings, line 322, in __call__
  Module Products.PloneHotfix20110531, line 106, in _patched_bindAndExec
  Module Shared.DC.Scripts.Bindings, line 359, in _bindAndExec
  Module Products.PythonScripts.PythonScript, line 344, in _exec
  Module script, line 1, in content_edit
   - <FSControllerPythonScript at /demo/demo3/sinsheim/prozesse/kernprozesse/einkauf/content_edit>
   - Line 1
  Module Products.CMFCore.FSPythonScript, line 127, in __call__
  Module Shared.DC.Scripts.Bindings, line 322, in __call__
  Module Products.PloneHotfix20110531, line 106, in _patched_bindAndExec
  Module Shared.DC.Scripts.Bindings, line 359, in _bindAndExec
  Module Products.PythonScripts.PythonScript, line 344, in _exec
  Module script, line 13, in content_edit_impl
   - <FSPythonScript at /demo/demo3/sinsheim/prozesse/kernprozesse/einkauf/content_edit_impl>
   - Line 13
  Module Products.LinguaPlone.I18NBaseObject, line 421, in processForm
  Module Products.Archetypes.BaseObject, line 658, in processForm
  Module Products.LinguaPlone.I18NBaseObject, line 406, in _processForm
...
  Module Products.Archetypes.CatalogMultiplex, line 123, in reindexObject
  Module Products.CMFPlone.CatalogTool, line 387, in catalog_object
  Module Products.ZCatalog.ZCatalog, line 476, in catalog_object
CatalogError: The object unique id must be a string.

With pdb I found out that the catalog_object method in ZCatalog object recieves among other things a variable called 'uid' which is basically a string representation of the object's path. The problem you can see in the traceback is that this uid is actually Unicode, not a string.

Anybody has an idea what's going on? The corresponding index in the catalog is obviously cmf_uid.

Thanks for any insight,
best regards, Christoph



More information about the Product-Developers mailing list