def items(self, n_items=12): if hasattr(self,'_items'): # If the property already contains something, there's no need to # regenerate it. return self._items project = self.context # members = list(project.projectMembers()) members = project.projectMemberBrains() # XXX should probably go in Products.Openplans' project # maybe related to docstring above while filtering by hand is necessary? team = project.getTeams()[0] wf = getToolByName(project, 'portal_workflow') members = [ member for member in members if wf.getInfoFor(team.getMembershipByMemberId(member.getId), 'review_state') == 'public' ] members.sort(key=portrait_sort_key, reverse=True) # could also sort by admin-ness, lastlogin, etc members = members[:n_items] self._items = [] for member in members: link = profile_path(member.getId) self.add_item(title=member.getId, description=member.getFullname, link=link, author=member.getId, pubDate=member.getLast_login_time) return self._items
def memberURL(self, id): """Utility method that uses the current context to convert a member id into a URL""" return '%s/%s' % (getToolByName(self.context, 'portal_url')(), profile_path(id))