def get_context_data(self, **kwargs): data = super(TestingReportCaseRuns, self).get_context_data(**kwargs) query_args = self.request.GET form = self._get_form(query_args) if form.is_valid(): test_case_runs = self.get_case_runs(form) status_names = TestCaseRunStatus.get_names() priority_values = Priority.get_values() testers_ids, assignees_ids = self._get_testers_assignees_ids( test_case_runs) testers = self.get_related_testers(testers_ids) assignees = self.get_related_assignees(assignees_ids) data['test_case_runs_count'] = len(test_case_runs) data['test_case_runs'] = self.walk_case_runs(test_case_runs, status_names, priority_values, testers, assignees) else: data['form_errors'] = form.errors return data
def walk_case_runs(): """Walking case runs for helping rendering case runs table""" priorities = dict(Priority.objects.values_list('pk', 'value')) testers, assignees = open_run_get_users(test_case_runs) comments_subtotal = open_run_get_comments_subtotal( [cr.pk for cr in test_case_runs]) case_run_status = TestCaseRunStatus.get_names() for case_run in test_case_runs: yield (case_run, testers.get(case_run.tested_by_id, None), assignees.get(case_run.assignee_id, None), priorities.get(case_run.case.priority_id), case_run_status[case_run.case_run_status_id], comments_subtotal.get(case_run.pk, 0))
def walk_case_runs(self, test_case_runs): # todo: this is the same method as in testruns/views.py status_names = TestCaseRunStatus.get_names() priority_values = dict(Priority.objects.values_list('pk', 'value')) testers_ids, assignees_ids = _get_testers_assignees_ids(test_case_runs) testers = self.get_related_users(testers_ids) assignees = self.get_related_users(assignees_ids) for case_run in test_case_runs: status_name = status_names[case_run.case_run_status_id] priority_value = priority_values[case_run.case.priority_id] tester_username = testers.get(case_run.tested_by_id, None) assignee_username = assignees.get(case_run.assignee_id, None) yield case_run, status_name, priority_value, ( case_run.assignee_id, assignee_username), ( case_run.tested_by_id, tester_username)