def search(self, request): key_word = request.get_form_var('q') if not key_word: return self._index(request) status = request.get_form_var('status') user = request.user page = request.get_form_var('page', 1) project = self.project tickets = [] ticket_len = Ticket.get_count_by_proj_id(project.id) search_result = PullRequestSearch.search_a_phrase( key_word, project.id, size=ticket_len) if search_result and not search_result.get('error'): ticket_ids = [id for id, in SearchEngine.decode( search_result, ['ticket_id'])] tickets = Ticket.gets_by_projectid_and_ticketnumbers( project.id, ticket_ids) if status == "closed": tickets = [t for t in tickets if t.closed] else: tickets = [t for t in tickets if not t.closed] ticket_total_len = len(tickets) limit = TICKETS_COUNT_PER_PAGE start = TICKETS_COUNT_PER_PAGE * (int(page) - 1) tickets = tickets[start:start + limit] n_pages = (ticket_total_len - 1) / TICKETS_COUNT_PER_PAGE + 1 if status == "closed": is_closed_tab = True else: is_closed_tab = False open_tab_link = self.open_tab_link close_tab_link = self.close_tab_link return st('/pull/pulls.html', **locals())
def search(self, request): key_word = request.get_form_var('q') if not key_word: return self._index(request) status = request.get_form_var('status') user = request.user page = request.get_form_var('page', 1) project = self.project tickets = [] ticket_len = Ticket.get_count_by_proj_id(project.id) search_result = PullRequestSearch.search_a_phrase(key_word, project.id, size=ticket_len) if search_result and not search_result.get('error'): ticket_ids = [ id for id, in SearchEngine.decode(search_result, ['ticket_id']) ] tickets = Ticket.gets_by_projectid_and_ticketnumbers( project.id, ticket_ids) if status == "closed": tickets = [t for t in tickets if t.closed] else: tickets = [t for t in tickets if not t.closed] ticket_total_len = len(tickets) limit = TICKETS_COUNT_PER_PAGE start = TICKETS_COUNT_PER_PAGE * (int(page) - 1) tickets = tickets[start:start + limit] n_pages = (ticket_total_len - 1) / TICKETS_COUNT_PER_PAGE + 1 if status == "closed": is_closed_tab = True else: is_closed_tab = False open_tab_link = self.open_tab_link close_tab_link = self.close_tab_link return st('/pull/pulls.html', **locals())
def index(request): if list_type == 'search': key_word = request.get_form_var('q', None) if not key_word: return self._index(request) milestone_number = request.get_form_var('milestone') state = request.get_form_var('state', 'open') page = request.get_form_var('page', 1) project_name = self.proj_name user = request.user project = self.project order = get_order_type(request, 'project_issues_order') # noqa 目前支持list_type = repo的sort_by n_open_issues = project.n_open_issues n_closed_issues = project.n_closed_issues n_everyone_issues = 0 n_assigned_issues = 0 n_created_issues = 0 n_pages = 0 selected_tag_names = request.get_form_var('tags', '') start = ISSUES_COUNT_PER_PAGE * (int(page) - 1) limit = ISSUES_COUNT_PER_PAGE is_closed_tab = None if state == "open" else True issue_list = [] total_issues = 0 opts = dict(project=project, state=state, start=start, limit=limit, order=order) if selected_tag_names: selected_tag_names = selected_tag_names.split(',') tags = filter(None, [TagName.get_project_issue_tag( name, project) for name in selected_tag_names]) opts['tags'] = tags show_tags = project.get_group_tags(selected_tag_names) if milestone_number: milestone = Milestone.get_by_project( project, number=milestone_number) opts['milestone'] = milestone # FIXME: why user or list_type ? if user or list_type in ('repo', 'search'): if list_type == 'search': # FIXME: search with assigned or creator search_result = IssueSearch.search_a_phrase( key_word, self.project.id, size=n_open_issues + n_closed_issues, state=state) or [] search_issue_ids = [] if search_result and not search_result.get('error'): search_issue_ids = [ id for id, in SearchEngine.decode( search_result, ['issue_id'])] # FIXME: is search_issue_ids int[]? opts['issue_ids'] = search_issue_ids elif list_type == 'created_by': opts['creator'] = user elif list_type == 'assigned': opts['assignee'] = user # FIXME: update n_closed_issues & n_open_issues multi_dict = ProjectIssue.get_multi_by(**opts) issue_list = multi_dict['issues'] total_issues = multi_dict['total'] if user: if list_type == 'repo': n_assigned_issues = user.get_n_assigned_issues_by_project(project.id, state) # noqa n_created_issues = user.get_n_created_issues_by_project(project.id, state) # noqa elif list_type == 'created_by': n_assigned_issues = user.get_n_assigned_issues_by_project(project.id, state) # noqa n_created_issues = total_issues elif list_type == 'assigned': n_assigned_issues = total_issues n_created_issues = user.get_n_created_issues_by_project(project.id, state) # noqa elif list_type == 'search' and search_issue_ids: n_assigned_issues = ProjectIssue.get_n_by_issue_ids_and_assignee_id( # noqa search_issue_ids, state, user.name) n_created_issues = ProjectIssue.get_n_by_issue_ids_and_creator_id( # noqa search_issue_ids, state, user.name) n_pages = (total_issues - 1) / ISSUES_COUNT_PER_PAGE + 1 # tags 的选择只会改变选中的filter的显示issue数 if list_type in ('repo', 'search'): n_everyone_issues = total_issues else: n_everyone_issues = n_open_issues \ if state == "open" else n_closed_issues return st('issue/issues.html', **locals())
def index(request): if list_type == 'search': key_word = request.get_form_var('q', None) if not key_word: return self._index(request) milestone_number = request.get_form_var('milestone') state = request.get_form_var('state', 'open') page = request.get_form_var('page', 1) project_name = self.proj_name user = request.user project = self.project order = get_order_type( request, 'project_issues_order') # noqa 目前支持list_type = repo的sort_by n_open_issues = project.n_open_issues n_closed_issues = project.n_closed_issues n_everyone_issues = 0 n_assigned_issues = 0 n_created_issues = 0 n_pages = 0 selected_tag_names = request.get_form_var('tags', '') start = ISSUES_COUNT_PER_PAGE * (int(page) - 1) limit = ISSUES_COUNT_PER_PAGE is_closed_tab = None if state == "open" else True issue_list = [] total_issues = 0 opts = dict(project=project, state=state, start=start, limit=limit, order=order) if selected_tag_names: selected_tag_names = selected_tag_names.split(',') tags = filter(None, [ TagName.get_project_issue_tag(name, project) for name in selected_tag_names ]) opts['tags'] = tags show_tags = project.get_group_tags(selected_tag_names) if milestone_number: milestone = Milestone.get_by_project(project, number=milestone_number) opts['milestone'] = milestone # FIXME: why user or list_type ? if user or list_type in ('repo', 'search'): if list_type == 'search': # FIXME: search with assigned or creator search_result = IssueSearch.search_a_phrase( key_word, self.project.id, size=n_open_issues + n_closed_issues, state=state) or [] search_issue_ids = [] if search_result and not search_result.get('error'): search_issue_ids = [ id for id, in SearchEngine.decode( search_result, ['issue_id']) ] # FIXME: is search_issue_ids int[]? opts['issue_ids'] = search_issue_ids elif list_type == 'created_by': opts['creator'] = user elif list_type == 'assigned': opts['assignee'] = user # FIXME: update n_closed_issues & n_open_issues multi_dict = ProjectIssue.get_multi_by(**opts) issue_list = multi_dict['issues'] total_issues = multi_dict['total'] if user: if list_type == 'repo': n_assigned_issues = user.get_n_assigned_issues_by_project( project.id, state) # noqa n_created_issues = user.get_n_created_issues_by_project( project.id, state) # noqa elif list_type == 'created_by': n_assigned_issues = user.get_n_assigned_issues_by_project( project.id, state) # noqa n_created_issues = total_issues elif list_type == 'assigned': n_assigned_issues = total_issues n_created_issues = user.get_n_created_issues_by_project( project.id, state) # noqa elif list_type == 'search' and search_issue_ids: n_assigned_issues = ProjectIssue.get_n_by_issue_ids_and_assignee_id( # noqa search_issue_ids, state, user.name) n_created_issues = ProjectIssue.get_n_by_issue_ids_and_creator_id( # noqa search_issue_ids, state, user.name) n_pages = (total_issues - 1) / ISSUES_COUNT_PER_PAGE + 1 # tags 的选择只会改变选中的filter的显示issue数 if list_type in ('repo', 'search'): n_everyone_issues = total_issues else: n_everyone_issues = n_open_issues \ if state == "open" else n_closed_issues return st('issue/issues.html', **locals())