• Remember Mailing List

Re: custommember based on sample remember gives KeyError: "Category set 'CustomMember_membrane_workflow_states' does not exist"

from Rob Miller on Jul 14, 2008 01:53 PM
David Bain wrote:
> I'm working with a Custom member based on sampleremember
> (http://svn.plone.org/svn/collective/Products.remember/trunk/Products/remember/examples/sampleremember/
> )
> 
> It was created basically using search and replace based on sampleremember
> When I try to install it via the portal_setup > import
> 
> I get the following traceback
> 
> .../plone/portal_setup/manage_importAllSteps
> Traceback (innermost last):
>   Module ZPublisher.Publish, line 119, in publish
>   Module ZPublisher.mapply, line 88, in mapply
>   Module ZPublisher.Publish, line 42, in call_object
>   Module Products.GenericSetup.tool, line 526, in manage_importAllSteps
>   Module Products.GenericSetup.tool, line 322, in runAllImportStepsFromProfile
>    - __traceback_info__: profile-Products.CustomMember:default
>   Module Products.GenericSetup.tool, line 1028, in _runImportStepsFromContext
>   Module Products.GenericSetup.tool, line 987, in _doRunImportStep
>    - __traceback_info__: membranetool
>   Module Products.membrane.exportimport.membranetool, line 157, in
> importMembraneTool
>   Module Products.GenericSetup.utils, line 786, in importObjects
>    - __traceback_info__: membrane_tool
>   Module Products.GenericSetup.utils, line 542, in _importBody
>   Module Products.remember.exportimport.membranetool, line 23, in _importNode
>   Module Products.membrane.exportimport.membranetool, line 48, in _importNode
>   Module Products.membrane.exportimport.membranetool, line 117, in
> _initMembraneTypes
>   Module Products.membrane.factories.categorymapper, line 93, in
> replaceCategoryValues
>   Module Products.membrane.factories.categorymapper, line 36, in _getCatSet
> KeyError: "Category set 'CustomMember_membrane_workflow_states' does not exist"
> http://svn.plone.org/svn/collective/Products.remember/trunk/Products/remember/examples/sampleremember/profiles/default/membrane_tool.xml
> 
> I found an interesting work around:
> changing my profile's membrane_tool.xml from this:
> 
>  <?xml version="1.0"?>
>  <object name="membrane_tool" meta_type="MembraneTool">
>   <membrane-type name="SampleRemember">
>     <active-workflow-state name="public" />
>     <active-workflow-state name="private" />
>   </membrane-type>
>  </object>
> 
> To this:
> 
> <?xml version="1.0"?>
> <object name="membrane_tool" meta_type="MembraneTool">
>   <membrane-type name="SampleRemember">
> <!--    <active-workflow-state name="public" />
>     <active-workflow-state name="private" />
> -->
> </membrane-type>
> </object>
> 
> got rid of the error.

hrm.  it seems weird to me that this worked.  not sure why that is.

> Based on the traceback, and my investigation, there seems to be an
> issue with membrane's category mapper, I haven't dug deep enough to be
> sure, but I figure someone more familiar might know what's going in.

the issue is that you've created a new type, but you haven't defined which 
workflow states are active for your custom type.

> For the moment, I'll map active member states manually TTW.

you should instead modify your GS profile so that the member states for your 
type are being specified:

<?xml version="1.0"?>
<object name="membrane_tool" meta_type="MembraneTool">
  <membrane-type name="CustomMember">
    <active-workflow-state name="public" />
    <active-workflow-state name="private" />
  </membrane-type>
</object>

note the different membrane-type setting.

-r
Return to date view: threaded or flat