def get_multi_by(cls, *a, **kw): """ A wrapper to get project issues """ # args issue_ids = kw.get('issue_ids') project = kw.get('project') creator = kw.get('creator') assignee = kw.get('assignee') state = kw.get('state') start = kw.get('start') limit = kw.get('limit') milestone = kw.get('milestone') tags = kw.get('tags') order = kw.get('order') ids = None # get ids issue_ids = cls._get_ids_by_project_id( project.id, order=order, state=state) if not issue_ids else issue_ids if milestone: ids = set(issue_ids) & set(milestone.issue_ids) if tags: ids = set(issue_ids) if not ids else ids for tag in tags: ids = ids & set(tag.project_issue_ids) if ids is not None: issue_ids = filter(lambda x: x in ids, issue_ids) issues = Issue.get_cached_issues(issue_ids) # filter if assignee: issues = filter(lambda x: x.assignee_id == assignee.name, issues) if creator: issues = filter(lambda x: x.creator_id == creator.name, issues) return dict(issues=issues[start:start + limit], total=len(issues))
def _gets_by_people_id(cls, project, people_id, state, type): ids = cls._get_ids_by_project_id(project, order='updated_at', state=state) issues = Issue.get_cached_issues(ids) issues = [issue for issue in issues if getattr(issue, type) == people_id] return issues
def _gets_by_people_id(cls, project, people_id, state, type): ids = cls._get_ids_by_project_id(project, order='updated_at', state=state) issues = Issue.get_cached_issues(ids) issues = [ issue for issue in issues if getattr(issue, type) == people_id ] return issues
def gets_by_project_ids(cls, project_ids, state=None, limit=25, start=0): data = [] for id in project_ids: data.extend(cls.get_data_by_target(id)) data = filter_issue_ids_by_state(data, state) data = filter_issue_ids_by_score(data, 'updated_at') data = data[start:start + limit] ids = [issue_id for (issue_id, _, _, _) in data] return Issue.get_cached_issues(ids)
def get_n_by_issue_ids(cls, issue_ids, state=None): if not state: return len(issue_ids) else: issues = Issue.get_cached_issues(issue_ids) open_issues = [issue for issue in issues if issue and not issue.is_closed] close_issues = [issue for issue in issues if issue and issue.is_closed] if state == "open": return len(open_issues) else: return len(close_issues)
def get_n_by_issue_ids(cls, issue_ids, state=None): if not state: return len(issue_ids) else: issues = Issue.get_cached_issues(issue_ids) open_issues = [ issue for issue in issues if issue and not issue.is_closed ] close_issues = [ issue for issue in issues if issue and issue.is_closed ] if state == "open": return len(open_issues) else: return len(close_issues)
def _get_issues_by_project_id(cls, id, state=None): '''get project issues by project id with order and issue state.''' ids = cls._get_ids_by_project_id(id, state=state) return Issue.get_cached_issues(ids)