r13538 - archetypes.memberdatastorage/trunk/archetypes/memberdatastorage
"Raphael Ritz" <[email protected]> Tue, 29 Mar 2011 08:37:34 +0000
| Newsgroups | gmane.comp.web.zope.plone.archetypes.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: raphael
Date: Tue Mar 29 08:37:33 2011
New Revision: 13538
Modified:
archetypes.memberdatastorage/trunk/archetypes/memberdatastorage/memberdatastorage.py
archetypes.memberdatastorage/trunk/archetypes/memberdatastorage/memberpropertyfield.py
Log:
archetypes.memberdatastorage should not break when enabling email based login.
Modified: archetypes.memberdatastorage/trunk/archetypes/memberdatastorage/memberdatastorage.py
==============================================================================
--- archetypes.memberdatastorage/trunk/archetypes/memberdatastorage/memberdatastorage.py (original)
+++ archetypes.memberdatastorage/trunk/archetypes/memberdatastorage/memberdatastorage.py Tue Mar 29 08:37:33 2011
@@ -2,6 +2,12 @@
logger = logging.getLogger('archetypes.memberdatastorage')
logger.setLevel(logging.DEBUG)
+try:
+ from Products.PlonePAS.utils import decleanId
+except ImportError: # prior to Plone 4
+ def decleanId(id):
+ return id
+
from Products.CMFCore.utils import getToolByName
from Products.Archetypes.Storage import StorageLayer
from Products.Archetypes.Storage.annotation import AnnotationStorage
@@ -20,8 +26,10 @@
This heavily relies on name magic.
It is assumed that the correponding member
- and content instances have *exactly* the
- same id. Furthermore the field names have
+ and content instances have corresponding ids
+ where the correspondance is established through
+ Products.PlonePAS.utils.[de]cleanId.
+ Furthermore the field names have
to match corresponding memberdata properties
unless the memberproperty id is specified when
instanciating the storage.
@@ -57,7 +65,7 @@
logger.debug("Initializing memberproperty field '%s' to look for %s" % \
(field.getName(), name))
membership_tool = self.getMembershipTool(instance)
- member = membership_tool.getMemberById(instance.getId())
+ member = membership_tool.getMemberById(decleanId(instance.getId()))
memberdata_tool = getToolByName(instance, 'portal_memberdata')
if not memberdata_tool.hasProperty(name):
logger.debug("Adding %s property to the memberdata tool" % name)
@@ -69,7 +77,7 @@
security.declarePrivate('get')
def get(self, name, instance, **kwargs):
membership_tool = self.getMembershipTool(instance)
- member = membership_tool.getMemberById(instance.getId())
+ member = membership_tool.getMemberById(decleanId(instance.getId()))
if member is not None:
id = self._member_property_id or name
value = member.getProperty(id)
@@ -80,7 +88,7 @@
security.declarePrivate('set')
def set(self, name, instance, value, **kwargs):
membership_tool = self.getMembershipTool(instance)
- member = membership_tool.getMemberById(instance.getId())
+ member = membership_tool.getMemberById(decleanId(instance.getId()))
if type(value) == type(u''):
value = encode(value, instance)
if member is not None:
Modified: archetypes.memberdatastorage/trunk/archetypes/memberdatastorage/memberpropertyfield.py
==============================================================================
--- archetypes.memberdatastorage/trunk/archetypes/memberdatastorage/memberpropertyfield.py (original)
+++ archetypes.memberdatastorage/trunk/archetypes/memberdatastorage/memberpropertyfield.py Tue Mar 29 08:37:33 2011
@@ -2,6 +2,12 @@
logger = logging.getLogger('archetypes.memberdatastorage')
logger.setLevel(logging.DEBUG)
+try:
+ from Products.PlonePAS.utils import decleanId
+except ImportError: # prior to Plone 4
+ def decleanId(id):
+ return id
+
from AccessControl import ClassSecurityInfo
from Products.CMFCore.utils import getToolByName
from Products.Archetypes import atapi
@@ -48,7 +54,7 @@
property_id = self.member_property_id or self.getName()
content_id = instance.getId()
membership_tool = getToolByName(instance, 'portal_membership')
- member = membership_tool.getMemberById(content_id)
+ member = membership_tool.getMemberById(decleanId(content_id))
if member is None:
return None
return member.getProperty(property_id)
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software
be a part of the solution? Download the Intel(R) Manageability Checker
today! http://p.sf.net/sfu/intel-dev2devmar