I wrote an email on this problem:
Now I think, I have an idea.
- personalize_form calls Products/PlonePAS/tools/memberdata.py(243)canWriteProperty()
- which leads to Products.PlonePAS-3.12-py2.4.egg/Products/PlonePAS/tools/memberdata.py(226)_memberdataHasProperty()
- which does 'if mdata'
- bool(mdata) results in 'False'
- Stepping into it lands us in Products/BTreeFolder2/BTreeFolder2.py(511)__getattr__(), with name being '__nonzero__'. What kind of name is that?
- http://docs.python.org/release/2.4/ref/customization.html informs us that bool tries to call __nonzero__(), then __len__() and after that assumes True
- So, because remembers portal_memberdata is a BTree, which has __len__, but is empty by default, this doesn't work.
- Let Products.remember.tools.memberdata.MemberDataContainer have a __nonzero__.
- Works like a charm!
- But is this the right place - shoudn't rather Products/PlonePAS/tools/memberdata.py(226)_memberdataHasProperty() do a 'if mdata != None'?