[CMF-checkins] CVS: CMF/CMFCore - MemberDataTool.py:1.27 MembershipTool.py:1.33

Jens Vagelpohl jens@zope.com
Fri, 9 May 2003 11:04:48 -0400


Update of /cvs-repository/CMF/CMFCore
In directory cvs.zope.org:/tmp/cvs-serv27821/CMFCore

Modified Files:
	MemberDataTool.py MembershipTool.py 
Log Message:
- better member search method (searchMemberData) on the member data tool. 
  it makes sure to check both member data wrapper *and* user object for
  the desired attribute, and it allows passing in a sequence of desired attributes.



=== CMF/CMFCore/MemberDataTool.py 1.26 => 1.27 ===
--- CMF/CMFCore/MemberDataTool.py:1.26	Thu Apr  3 15:46:46 2003
+++ CMF/CMFCore/MemberDataTool.py	Fri May  9 11:04:18 2003
@@ -105,9 +105,41 @@
         return [{ 'member_count' : member_count,
                   'orphan_count' : orphan_count }]
 
+    security.declarePrivate('searchMemberData')
+    def searchMemberData(self, search_param, search_term, attributes=()):
+        """ Search members. """
+        res = []
+
+        if not search_param:
+            return res
+
+        membership = getToolByName(self, 'portal_membership')
+
+        if len(attributes) == 0:
+            attributes = ('id', 'email')
+
+        if search_param == 'username':
+            search_param = 'id'
+
+        for user_wrapper in self._members.values():
+            u = membership.getMemberById(user_wrapper.id)
+            searched = u.getProperty(search_param, None)
+            if searched is not None and searched.find(search_term) != -1:
+                user_data = {}
+
+                for desired in attributes:
+                    if desired == 'id':
+                        user_data['username'] = u.getProperty(desired, '')
+                    else:
+                        user_data[desired] = u.getProperty(desired, '')
+
+                res.append(user_data)
+
+        return res
+
     security.declarePrivate( 'searchMemberDataContents' )
     def searchMemberDataContents( self, search_param, search_term ):
-        """ Search members """
+        """ Search members. This method will be deprecated soon. """
         res = []
 
         if search_param == 'username':


=== CMF/CMFCore/MembershipTool.py 1.32 => 1.33 ===
--- CMF/CMFCore/MembershipTool.py:1.32	Thu Feb 13 02:44:07 2003
+++ CMF/CMFCore/MembershipTool.py	Fri May  9 11:04:18 2003
@@ -356,7 +356,7 @@
         """ Search the membership """
         md = getToolByName( self, 'portal_memberdata' )
 
-        return md.searchMemberDataContents( search_param, search_term )
+        return md.searchMemberData( search_param, search_term )
 
         
     security.declareProtected(View, 'getCandidateLocalRoles')