def get_worker_all(request, page_index): """ Returns html for the workers page """ if request.method != 'GET': return res.get_only_get_allowed({}) worker_entries = WorkerEntry.objects.all().order_by('name') page = Page(WORKER_ITEMS_PER_PAGE, page_index) pager = Paginator(worker_entries, page.items_per_page) current_page = pager.page(page.page_index) worker_entries = current_page.object_list page_indices = pag.get_pagination_indices(page, PAGINATION_HALF_RANGE, pager.num_pages) workers = get_workers_with_benchmark_info(worker_entries) control = {} control['name'] = ' Download Worker' control['link'] = ViewUrlGenerator.get_download_worker_url() control['icon'] = 'fa fa-arrow-down' control['onclick'] = 'window.location="{0}"'.format(control['link']) pagination = ViewPrepareObjects.prepare_pagination_workers(page_indices) data = {} data['menu'] = ViewPrepareObjects.prepare_menu_for_html([]) data['pagination'] = pagination data['workers'] = ViewPrepareObjects.prepare_workers_for_html(workers) data['controls'] = [] data['controls'].append(control) return res.get_template_data(request, 'presenter/worker_all.html', data)
def get_feed_reports_from_worker(request, worker_id, page_index): """ Returns a single item list of all the feeds produced by a worker """ if request.method != 'GET': return res.get_only_get_allowed({}) feed_entries = FeedEntry.objects.filter(worker__id=worker_id).order_by('-created_at') page = Page(FEED_REPORT_ITEMS_PER_PAGE, page_index) pager = Paginator(feed_entries, page.items_per_page) current_page = pager.page(page.page_index) feed_entries = current_page.object_list page_indices = pag.get_pagination_indices(page, PAGINATION_HALF_RANGE, pager.num_pages) items = [] for report in feed_entries: obj = {} obj['name'] = 'REPORT {0}'.format(report.id) obj['url'] = ViewUrlGenerator.get_feed_report_url(report.id) items.append(obj) data = {} data['menu'] = ViewPrepareObjects.prepare_menu_for_html([]) data['controls'] = get_feed_controls(worker_id, KEEP_YOUNG_COUNT) data['pagination'] = ViewPrepareObjects.prepare_pagination_feed_reports(worker_id, page_indices) data['items'] = items return res.get_template_data(request, 'presenter/single_item_list.html', data)
def test_pagination_page_index_out_bottom_bound(self): pagination = pag.get_pagination_indices(Page(1, -1), 2, 10) self.assertEqual(1, pagination['prev']) self.assertEqual(1, pagination['current']) self.assertEqual(2, pagination['next']) self.assertEqual([1, 2, 3, 4, 5], pagination['page_indices'])
def test_pagination_indices_only_one_page(self): pagination = pag.get_pagination_indices(Page(1, 3), 2, 1) self.assertEqual(1, pagination['prev']) self.assertEqual(1, pagination['current']) self.assertEqual(1, pagination['next']) self.assertEqual([1], pagination['page_indices'])
def test_pagination_page_index_out_upper_bound(self): pagination = pag.get_pagination_indices(Page(1, 12), 2, 10) self.assertEqual(9, pagination['prev']) self.assertEqual(10, pagination['current']) self.assertEqual(10, pagination['next']) self.assertEqual([6, 7, 8, 9, 10], pagination['page_indices'])
def test_pagination_indices_start_out_of_bounds_small(self): pagination = pag.get_pagination_indices(Page(1, 2), 2, 4) self.assertEqual(1, pagination['prev']) self.assertEqual(2, pagination['current']) self.assertEqual(3, pagination['next']) self.assertEqual([1, 2, 3, 4], pagination['page_indices'])
def test_pagination_indices_start_close_to_upper_bounds_small(self): pagination = pag.get_pagination_indices(Page(1, 3), 2, 4) self.assertEqual(2, pagination['prev']) self.assertEqual(3, pagination['current']) self.assertEqual(4, pagination['next']) self.assertEqual([1, 2, 3, 4], pagination['page_indices'])
def test_pagination_indices_start_close_to_upper_bound(self): pagination = pag.get_pagination_indices(Page(1, 9), 2, 10) self.assertEqual(8, pagination['prev']) self.assertEqual(9, pagination['current']) self.assertEqual(10, pagination['next']) self.assertEqual([6, 7, 8, 9, 10], pagination['page_indices'])
def test_pagination_indices_start_inbounds(self): pagination = pag.get_pagination_indices(Page(1, 4), 2, 10) self.assertEqual(3, pagination['prev']) self.assertEqual(4, pagination['current']) self.assertEqual(5, pagination['next']) self.assertEqual([2, 3, 4, 5, 6], pagination['page_indices'])
def get_paginated_layouts_as_objects(page): """ Returns paginated list of layouts """ layout_entries = BluesteelLayoutEntry.objects.all().order_by( '-created_at') pager = Paginator(layout_entries, page.items_per_page) current_page = pager.page(page.page_index) layout_entries = current_page.object_list page_indices = pag.get_pagination_indices(page, PAGINATION_HALF_RANGE, pager.num_pages) layouts = [] for layout in layout_entries: obj = {} obj['id'] = layout.id obj['name'] = layout.name obj['active'] = layout.active obj['project_index_path'] = layout.project_index_path obj['projects'] = [] project_entries = BluesteelProjectEntry.objects.filter( layout__id=layout.id) for prj_entry in project_entries: prj = {} prj['name'] = prj_entry.name obj['projects'].append(prj) layouts.append(obj) return (layouts, page_indices)
def get_bench_exec_commits_paginated(project_entry, branch_entry, page): """ Returns a commit list window from a page """ branch_trails = GitBranchTrailEntry.objects.filter(project=project_entry, branch=branch_entry).order_by('order') pager = Paginator(branch_trails, page.items_per_page) current_page = pager.page(page.page_index) branch_trails = current_page.object_list page_indices = pag.get_pagination_indices(page, PAGINATION_HALF_RANGE, pager.num_pages) commit_hashes = [] for trail in branch_trails: commit_hashes.append(trail.commit.commit_hash) return (commit_hashes, page_indices)
def get_pgtd_branches_trimmed_by_merge_target(page, project, max_commits): """ Returns paginated branch data trimmed by its merge target information """ branches = GitBranchEntry.objects.filter( project=project).order_by('order') pager = Paginator(branches, page.items_per_page) current_page = pager.page(page.page_index) branches = current_page.object_list page_indices = pag.get_pagination_indices(page, PAGINATION_HALF_RANGE, pager.num_pages) branches = GitController.get_branches_trimmed_by_merge_target( project, branches, max_commits) return branches, page_indices
def get_paginated_projects_as_objects(page): """ Returns paginated list of projects """ project_entries = BluesteelProjectEntry.objects.all().order_by('-created_at') pager = Paginator(project_entries, page.items_per_page) current_page = pager.page(page.page_index) project_entries = current_page.object_list page_indices = pag.get_pagination_indices(page, PAGINATION_HALF_RANGE, pager.num_pages) projects = [] for project in project_entries: obj = {} obj['id'] = project.id obj['name'] = project.name projects.append(obj) return (projects, page_indices)
def test_pagination_normal_range(self): pagination = pag.get_pagination_indices(Page(2, 3), 2, 15) pag_url = pag.get_pagination_urls(pagination, '/view/main/') self.assertEqual('/view/main/page/2/', pag_url['prev']) self.assertEqual('/view/main/page/3/', pag_url['current']) self.assertEqual('/view/main/page/4/', pag_url['next']) self.assertEqual('/view/main/page/1/', pag_url['pages'][0]['url']) self.assertEqual('/view/main/page/2/', pag_url['pages'][1]['url']) self.assertEqual('/view/main/page/3/', pag_url['pages'][2]['url']) self.assertEqual('/view/main/page/4/', pag_url['pages'][3]['url']) self.assertEqual('/view/main/page/5/', pag_url['pages'][4]['url']) self.assertEqual(1, pag_url['pages'][0]['index']) self.assertEqual(2, pag_url['pages'][1]['index']) self.assertEqual(3, pag_url['pages'][2]['index']) self.assertEqual(4, pag_url['pages'][3]['index']) self.assertEqual(5, pag_url['pages'][4]['index']) self.assertEqual(False, pag_url['pages'][0]['is_current']) self.assertEqual(False, pag_url['pages'][1]['is_current']) self.assertEqual(True, pag_url['pages'][2]['is_current']) self.assertEqual(False, pag_url['pages'][3]['is_current']) self.assertEqual(False, pag_url['pages'][4]['is_current'])
def get_benchmark_definitions_with_pagination(items_per_page, page_index, pagination_half_range): """ Returns Benchmark Definitions given a page index """ def_entries = BenchmarkDefinitionEntry.objects.all().order_by( '-active', 'name') page = Page(items_per_page, page_index) pager = Paginator(def_entries, page.items_per_page) current_page = pager.page(page.page_index) def_entries = current_page.object_list page_indices = pag.get_pagination_indices(page, pagination_half_range, pager.num_pages) definitions = [] for def_entry in def_entries: def_obj = def_entry.as_object() def_obj['fluctuation_overrides'] = [] def_obj['work_passes'] = [] flucs = BenchmarkFluctuationOverrideEntry.objects.filter( definition__id=def_entry.id) for fluc in flucs: obj = {} obj['result_id'] = fluc.result_id obj['override_value'] = fluc.override_value def_obj['fluctuation_overrides'].append(obj) work_passes = BenchmarkDefinitionWorkerPassEntry.objects.filter( definition__id=def_entry.id) for work_pass in work_passes: def_obj['work_passes'].append(work_pass.as_object()) definitions.append(def_obj) return (definitions, page_indices)