• 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 17, 2008 08:27 PM
David Bain wrote:
> Yes, that's actually what I had (NOT The SampleRemember type). And I
> got the errors mentioned.

okay, i've got a few minutes to look at this now...

> On Mon, Jul 14, 2008 at 12:54 PM, Rob Miller <robm@...> wrote:
>> 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

i think right here is where the error is.  looking at the _initMembraneTypes 
method in the GS importer, it's supposed to:

- read in the membrane type from the XML

- check if the membrane type is already registered

- register it as a membrane type, if not, which in turn:
   * fires a MembraneTypeRegisteredEvent
   * which has a subscriber in Products.membrane.factories.statusmapper that 
initializes the status map stuff

- read in the "active" workflow states from the XML

- set the active workflow states in the status map storage

your hitting the error in the last step, because the status map data 
structures haven't been initialized, but that should have happened in the 
first step.

hmmm.. it looks like the conditionals in there don't handle the case where the 
member type is registered but the status mapper hasn't yet been initialized. 
that shouldn't be happening, but if it is it'd generate the error you're seeing.

there... i just made a commit to the Products.membrane trunk, r68584 
(http://dev.plone.org/collective/changeset/68584).  can you try that and see 
if it helps?

-r

>>>  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
>>>
Return to date view: threaded or flat