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