Changeset 968

Show
Ignore:
Timestamp:
09/21/07 10:24:59
Author:
koval
Message:

updated PASMemberdataHandler.py for compatibility with product's tests

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • qMemberdataExport/trunk/Extensions/getMemberData.py

    r895 r968  
    2121 
    2222    members = memberdatahandler.getAllMembers() 
    23  
    24     #PASMemberdata handler doesn't set this attribute  
    25     #memberdatahandler.fieldnames = memberdatahandler.listAllMemberProperties(exclude_props, include_props) 
    2623 
    2724    if batch > len(members) - start: batch = len(members) - start 
  • qMemberdataExport/trunk/MemberdataHandlers.py

    r646 r968  
    4646    def getMemberProperties(member, exclude_props=[], include_props=None): 
    4747        """ 
    48             Return all needed members' properties as dictionary 
     48            Return all needed member's properties as dictionary 
    4949            {property name : property value, ...}, 
    5050            exclude properties from exclue_props parameter 
  • qMemberdataExport/trunk/PASMemberdataHandler.py

    r895 r968  
    44 
    55from MemberdataHandlers import registerMemberdataHandler, IMemberdataHandler 
    6 from Products.PluggableAuthService.interfaces.authservice import IPluggableAuthService 
    76 
    87class PASMemberdataHandler: 
     
    1716        self.tool = getToolByName(self.context, 'portal_membership', None) 
    1817        self.fieldnames = [] 
     18        # for compatibility with Plone 2.0 (import next only on instance init) 
     19        from Products.PluggableAuthService.interfaces.authservice import IPluggableAuthService 
    1920        self.compatible = IPluggableAuthService.providedBy(self.context.acl_users) 
    2021        self.is_compatible() 
     
    3738        """ 
    3839        if not self.is_compatible(): return [] 
    39         all_props = set([]) 
    40         for member in self.getAllMembers(): 
    41             user = member.getUser() 
     40                 
     41        if ('id' not in exclude_props) and (include_props and 'id' in include_props or not include_props): 
     42            if 'id' not in self.fieldnames: self.fieldnames.append('id') 
     43        for memberId in self.getAllMembers(): 
     44            user = self.tool.acl_users.getUserById(memberId) 
    4245            for sheet in user.getOrderedPropertySheets(): 
    43                 all_props = all_props | set(sheet.propertyIds()) 
     46                for name in sheet.propertyIds(): 
     47                    if (name not in exclude_props) and (include_props and name in include_props or not include_props): 
     48                        if name not in self.fieldnames: self.fieldnames.append(name) 
    4449 
    45         # property sheet hasn't id property, next we add it manually 
    46         all_props = (all_props | set(['id'])) - set(exclude_props) 
    47         if include_props: all_props = all_props & set(include_props) 
    48         return list(all_props) 
     50        return self.fieldnames 
    4951 
    5052    def getAllMembers(self): 
    5153        """ 
    5254            Return all members with portal_membership.listMembers() method 
     55            (now this method returns only member ids) 
    5356        """ 
    5457        if not self.is_compatible(): return [] 
    55         return [user['userid'] for user in self.tool.acl_users.searchUsers()] 
    56         #return self.tool.listMembers() 
     58        mid_list = [user['userid'] for user in self.tool.acl_users.searchUsers()]         
     59         
     60        return mid_list  
    5761 
    5862    def getMemberProperties(self, member, exclude_props=[], include_props=None): 
     
    6973            if not props.has_key('id'): props['id'] = member 
    7074            if 'id' not in self.fieldnames: self.fieldnames.append('id') 
    71         #member = self.tool.wrapUser(self.tool.acl_users.getUserById(member)) 
    7275        user = self.tool.acl_users.getUserById(member) 
    73         #user = member.getUser() 
    7476        for sheet in user.getOrderedPropertySheets(): 
    7577            for field, value in sheet.propertyItems(): 
    76                 #field = item[0] 
    77                 #value = item[1] 
    7878                if type(value) is UnicodeType: 
    7979                    value = value.encode('UTF8') 
     
    8383                    if field not in self.fieldnames: 
    8484                        self.fieldnames.append(str(field)) 
    85             #self.fieldnames = self.fieldnames | set(sheet.propertyIds()) 
    86         #self.fieldnames = self.fieldnames - set(exclude_props) 
    87         #if include_props: self.fieldnames = self.fieldnames | set(include_props) 
    88         #id property isn't stored in property sheet, we can get it from member or user object 
    8985 
    9086        return props