Changeset 968
- Timestamp:
- 09/21/07 10:24:59
- Files:
-
- qMemberdataExport/trunk/Extensions/getMemberData.py (modified) (1 diff)
- qMemberdataExport/trunk/MemberdataHandlers.py (modified) (1 diff)
- qMemberdataExport/trunk/PASMemberdataHandler.py (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
qMemberdataExport/trunk/Extensions/getMemberData.py
r895 r968 21 21 22 22 members = memberdatahandler.getAllMembers() 23 24 #PASMemberdata handler doesn't set this attribute25 #memberdatahandler.fieldnames = memberdatahandler.listAllMemberProperties(exclude_props, include_props)26 23 27 24 if batch > len(members) - start: batch = len(members) - start qMemberdataExport/trunk/MemberdataHandlers.py
r646 r968 46 46 def getMemberProperties(member, exclude_props=[], include_props=None): 47 47 """ 48 Return all needed member s'properties as dictionary48 Return all needed member's properties as dictionary 49 49 {property name : property value, ...}, 50 50 exclude properties from exclue_props parameter qMemberdataExport/trunk/PASMemberdataHandler.py
r895 r968 4 4 5 5 from MemberdataHandlers import registerMemberdataHandler, IMemberdataHandler 6 from Products.PluggableAuthService.interfaces.authservice import IPluggableAuthService7 6 8 7 class PASMemberdataHandler: … … 17 16 self.tool = getToolByName(self.context, 'portal_membership', None) 18 17 self.fieldnames = [] 18 # for compatibility with Plone 2.0 (import next only on instance init) 19 from Products.PluggableAuthService.interfaces.authservice import IPluggableAuthService 19 20 self.compatible = IPluggableAuthService.providedBy(self.context.acl_users) 20 21 self.is_compatible() … … 37 38 """ 38 39 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) 42 45 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) 44 49 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 49 51 50 52 def getAllMembers(self): 51 53 """ 52 54 Return all members with portal_membership.listMembers() method 55 (now this method returns only member ids) 53 56 """ 54 57 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 57 61 58 62 def getMemberProperties(self, member, exclude_props=[], include_props=None): … … 69 73 if not props.has_key('id'): props['id'] = member 70 74 if 'id' not in self.fieldnames: self.fieldnames.append('id') 71 #member = self.tool.wrapUser(self.tool.acl_users.getUserById(member))72 75 user = self.tool.acl_users.getUserById(member) 73 #user = member.getUser()74 76 for sheet in user.getOrderedPropertySheets(): 75 77 for field, value in sheet.propertyItems(): 76 #field = item[0]77 #value = item[1]78 78 if type(value) is UnicodeType: 79 79 value = value.encode('UTF8') … … 83 83 if field not in self.fieldnames: 84 84 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 object89 85 90 86 return props
