from django.shortcuts import render from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from .models import Build, FeatureBuild, ScenarioBuild def index(request): return render(request, 'qa_analytics/helloworld.html') def failures(request): builds = Build.objects.prefetch_related("featurebuild_set__scenariobuild_set__stepbuild_set") scenarios = [] for build in builds: for feature in build.featurebuild_set.all(): for scenario in feature.scenariobuild_set.all(): scenarios.append(scenario) failed_scenarios = {} for scenario in scenarios: if scenario.passed() is not True: if scenario.name in failed_scenarios: if failed_scenarios[scenario.name]['last_failure'] < scenario.feature_build.build.ingested_time: failed_scenarios[scenario.name]['last_failure'] = scenario.feature_build.build.ingested_time failed_scenarios[scenario.name]['failures'] += 1 else: failed_scenarios[scenario.name] = { 'last_failure': scenario.feature_build.build.ingested_time, 'failures': 1} return render(request, 'qa_analytics/failures.html', {'failures': failed_scenarios}) def cucumber_builds(request): build_list = Build.objects.prefetch_related( "featurebuild_set__scenariobuild_set__stepbuild_set").order_by("-ingested_time") paginator = Paginator(build_list, 15) page = request.GET.get('page') try: builds = paginator.page(page) except PageNotAnInteger: builds = paginator.page(1) except EmptyPage: builds = paginator.page(paginator.num_pages) return render(request, 'qa_analytics/cucumber_builds.html', {'builds': builds}) def build_detail(request, pk): features = FeatureBuild.objects.filter(build_id=pk).prefetch_related("build", "scenariobuild_set__stepbuild_set") return render(request, 'qa_analytics/features.html', {'features': features}) def scenario_list(request, build_num, feature_num): scenarios = ScenarioBuild.objects.filter(feature_build_id=feature_num).prefetch_related("stepbuild_set") return render(request, 'qa_analytics/scenario_list.html', {'scenarios': scenarios})