def test_result_detail(request, result_id): build_qs = view_queryset(request) result = get_object_or_404( TestResult, id=result_id, build_flow__build__in=build_qs, ) data = {'result': result} if result.method.testclass.test_type == 'Apex': stats = STATS_MAP.keys() stats.sort() test_stats = [] test_stats.append({ 'limit': 'Duration', 'used': result.duration, 'allowed': 'N/A', 'percent': 'N/A', }) for stat in stats: used = getattr(result, '{}_used'.format(stat), None) if not used: continue test_stats.append({ 'limit': STATS_MAP[stat], 'used': used, 'allowed': getattr(result, '{}_allowed'.format(stat), None), 'percent': getattr(result, '{}_percent'.format(stat), None), }) data['test_stats'] = test_stats return render(request, 'testresults/test_result_detail.html', data)
def plan_detail(request, plan_id): plan = Plan.objects.get_for_user_or_404(request.user, {"id": plan_id}) query = {"plan": plan} builds = view_queryset(request, query) context = {"builds": builds, "plan": plan} return render(request, "plan/detail.html", context=context)
def repo_detail(request, owner, name): repo = Repository.objects.get_for_user_or_404( request.user, {"owner": owner, "name": name} ) query = {"repo": repo} builds = view_queryset(request, query) context = {"repo": repo, "builds": builds} return render(request, "repository/repo_detail.html", context=context)
def branch_detail(request, owner, name, branch): repo = Repository.objects.get_for_user_or_404( request.user, {"owner": owner, "name": name} ) branch = get_object_or_404(Branch, repo=repo, name=branch) query = {"branch": branch} builds = view_queryset(request, query) context = {"branch": branch, "builds": builds} return render(request, "repository/branch_detail.html", context=context)
def build_list(request): query = {} repo = request.GET.get("repo") if repo: query["repo__name"] = repo build_filter, builds = view_queryset( request, query, request.GET.get("status"), filterset_class=BuildFilter ) context = {"filter": build_filter, "builds": builds} return render(request, "build/build_list.html", context=context)
def org_detail(request, org_id): org = Org.objects.get_for_user_or_404(request.user, {"id": org_id}) # Get builds query = {"org": org} builds = view_queryset(request, query) # Get ScratchOrgInstances instances = org.instances.filter(deleted=False) if org.scratch else [] context = {"builds": builds, "org": org, "instances": instances} return render(request, "cumulusci/org_detail.html", context=context)
def test_method_trend(request, method_id): build_qs = view_queryset(request) method = get_object_or_404(TestMethod, id=method_id) latest_results = method.test_results.filter( build_flow__build__in=build_qs, ).order_by('-build_flow__time_end') latest_results = paginate(latest_results, request) results_by_plan = {} i = 0 for result in latest_results: plan_name = ( result.build_flow.build.plan.name, result.build_flow.build.branch.name, ) if plan_name not in results_by_plan: # Create the list padded with None for prior columns results_by_plan[plan_name] = [ None, ] * i results_by_plan[plan_name].append(result) i += 1 # Pad the other field's lists with None values for this column for key in results_by_plan.keys(): if key == plan_name: continue else: results_by_plan[key].append(None) results = [] plan_keys = results_by_plan.keys() plan_keys.sort() for key in plan_keys: plan_results = [] for result in results_by_plan[key]: plan_results.append(result) results.append((key[0], key[1], plan_results)) headers = ['Plan', 'Branch/Tag'] headers += [ '', ] * i data = { 'method': method, 'headers': headers, 'results': results, 'all_results': latest_results, } return render(request, 'testresults/test_method_trend.html', data)
def org_detail(request, org_id): org = Org.objects.get_for_user_or_404(request.user, {"id": org_id}) # Get builds query = {"org": org} builds = view_queryset(request, query) # Get ScratchOrgInstances instances = org.instances.filter(deleted=False) if org.scratch else [] context = {"builds": builds, "org": org, "instances": instances} context[ "can_log_in"] = org.scratch or settings.METACI_ALLOW_PERSISTENT_ORG_LOGIN return render(request, "cumulusci/org_detail.html", context=context)
def build_list(request): query = {} repo = request.GET.get('repo') if repo: query['repo__name'] = repo build_filter, builds = view_queryset(request, query, request.GET.get('status'), filter_class=BuildFilter) context = { 'filter': build_filter, 'builds': builds, } return render(request, 'build/build_list.html', context=context)
def plan_detail(request, plan_id): query = {'id': plan_id} if not request.user.is_staff: query['public'] = True plan = get_object_or_404(Plan, **query) query = {'plan': plan} builds = view_queryset(request, query) context = { 'builds': builds, 'plan': plan, } return render(request, 'plan/detail.html', context=context)
def plan_detail_repo(request, plan_id, repo_owner, repo_name): query = {'id': plan_id} if not request.user.is_staff: query['public'] = True plan = get_object_or_404(Plan, **query) repo = get_object_or_404(Repository, owner=repo_owner, name=repo_name) query = {'plan': plan, 'repo': repo} builds = view_queryset(request, query) context = { 'builds': builds, 'plan': plan, } return render(request, 'plan/detail.html', context=context)
def test_method_peek(request, method_id): build_qs = view_queryset(request) method = get_object_or_404(TestMethod, id=method_id) latest_fails = method.test_results.filter( outcome='Fail', build_flow__build__in=build_qs, ).order_by('-build_flow__time_end').select_related( 'build_flow', 'build_flow__build', 'build_flow__build__repo', 'build_flow__build__plan', 'build_flow__build__branch', 'build_flow__build__branch__repo') latest_fails = paginate(latest_fails, request) data = {'method': method, 'latest_fails': latest_fails} return render(request, 'testresults/test_method_peek.html', data)
def org_instance_detail(request, org_id, instance_id): instance = get_object_or_404(ScratchOrgInstance, org_id=org_id, id=instance_id) # Verify access try: org = Org.objects.for_user(request.user).get(id=org_id) except Org.DoesNotExist: raise PermissionDenied("You are not authorized to view this org") # Get builds query = {"org_instance": instance} builds = view_queryset(request, query) context = {"builds": builds, "instance": instance} return render(request, "cumulusci/org_instance_detail.html", context=context)
def repo_detail(request, owner, name): query = { 'owner': owner, 'name': name, } if not request.user.is_staff: query['public'] = True repo = get_object_or_404(Repository, **query) query = {'repo': repo} builds = view_queryset(request, query) context = { 'repo': repo, 'builds': builds, } return render(request, 'repository/repo_detail.html', context=context)
def branch_detail(request, owner, name, branch): query = { 'owner': owner, 'name': name, } if not request.user.is_staff: query['public'] = True repo = get_object_or_404(Repository, **query) branch = get_object_or_404(Branch, repo=repo, name=branch) query = {'branch': branch} builds = view_queryset(request, query) context = { 'branch': branch, 'builds': builds, } return render(request, 'repository/branch_detail.html', context=context)
def test_result_robot(request, result_id): build_qs = view_queryset(request) result = get_object_or_404( TestResult, id=result_id, build_flow__build__in=build_qs, ) if result.robot_xml: source = mkstemp()[1] log = mkstemp('.html')[1] with open(source, 'w') as f: f.write(result.robot_xml) rebot(source, log=log, output=None, report=None) with open(log, 'r') as f: log_html = f.read() os.remove(source) os.remove(log) return HttpResponse(log_html)
def plan_detail_repo(request, plan_id, repo_owner, repo_name): planrepo = PlanRepository.objects.get_for_user_or_404( request.user, { "repo__owner": repo_owner, "repo__name": repo_name, "plan__id": plan_id }, ) query = {"planrepo": planrepo} builds = view_queryset(request, query) context = { "builds": builds, "plan": planrepo.plan, "planrepo": planrepo, "repo": planrepo.repo, } return render(request, "plan/plan_repo_detail.html", context=context)