def get_related_feeds(actor, project=None, extra_receivers=[], team_ids=[]): # FIXME: team_ids->team_id, 貌似没看到 team_ids 的需求 ''' user_timeline of actor, actor's followers, project owner, project's watchers, extra_receivers; team_timeline of project related team, team_ids; public_timeline; user_profile_timeline of actor ''' followers = User(actor).get_followers() if actor else [] proj_users = [] if project: proj_users += [u.username for u in project.get_watch_users()] proj_users.append(project.owner.username) users = filter( None, list(set([actor] + followers + proj_users + list(extra_receivers)))) feeds = [get_user_inbox(user) for user in users] if project: rls = TeamProjectRelationship.gets(project_id=project.id) feeds.extend([get_team_feed(rl.team_id) for rl in rls]) if team_ids: feeds.extend([get_team_feed(id) for id in team_ids]) feeds.append(get_public_feed()) if actor: feeds.append(get_user_feed(actor)) return feeds
def get_related_team_feeds(self): ''' team_timeline of project related team, team_ids ''' project = self._project team_id = {self._team_id} if self._team_id else set() if project: rls = TeamProjectRelationship.gets(project_id=project.id) related_team_ids = [rl.team_id for rl in rls] else: related_team_ids = [] team_ids = team_id | set(related_team_ids) return [get_team_feed(t) for t in team_ids]
def get_related_feeds(actor, project=None, extra_receivers=[], team_ids=[]): # FIXME: team_ids->team_id, 貌似没看到 team_ids 的需求 """ user_timeline of actor, actor's followers, project owner, project's watchers, extra_receivers; team_timeline of project related team, team_ids; public_timeline; user_profile_timeline of actor """ followers = User(actor).get_followers() if actor else [] proj_users = [] if project: proj_users += [u.username for u in project.get_watch_users()] proj_users.append(project.owner.username) users = filter(None, list(set([actor] + followers + proj_users + list(extra_receivers)))) feeds = [get_user_inbox(user) for user in users] if project: rls = TeamProjectRelationship.gets(project_id=project.id) feeds.extend([get_team_feed(rl.team_id) for rl in rls]) if team_ids: feeds.extend([get_team_feed(id) for id in team_ids]) feeds.append(get_public_feed()) if actor: feeds.append(get_user_feed(actor)) return feeds