def dashboard(request): """List the recent plan/run""" runs_query = { 'people': request.user, 'is_active': True, 'status': 'running', } tps = TestPlan.objects.filter( Q(author=request.user) | Q(owner=request.user)) tps = tps.order_by('-plan_id') tps = tps.select_related('product', 'type') tps = tps.extra(select={ 'num_runs': RawSQL.num_runs, }) tps_active = tps.filter(is_active=True) trs = TestRun.list(runs_query) latest_fifteen_testruns = trs.order_by('-run_id')[:15] test_plans_disable_count = tps.count() - tps_active.count() context_data = { 'user_profile': { 'user': request.user }, 'test_plans_count': tps.count(), 'test_plans_disable_count': test_plans_disable_count, 'test_runs_count': trs.count(), 'last_15_test_plans': tps_active[:15], 'last_15_test_runs': latest_fifteen_testruns, } return render(request, 'profile/dashboard.html', context_data)
def ajax_search(request, template_name='run/common/json_runs.txt'): """Response request to search test runs from Search Runs""" search_form = SearchRunForm(request.GET) if request.GET.get('product'): search_form.populate(product_id=request.GET['product']) else: search_form.populate() if search_form.is_valid(): trs = TestRun.list(search_form.cleaned_data) trs = trs.select_related( 'manager', 'default_tester', 'plan', 'build').only('run_id', 'summary', 'manager__username', 'default_tester__id', 'default_tester__username', 'plan__name', 'env_value', 'build__product__name', 'stop_date', 'product_version__value') # Further optimize by adding caserun attributes: column_names = [ '', 'run_id', 'summary', 'manager__username', 'default_tester__username', 'plan', 'build__product__name', 'product_version', 'total_num_caseruns', 'stop_date', 'completed', ] data_table_result = DataTableResult(request.GET, trs, column_names) response_data = data_table_result.get_response_data() searched_runs = response_data['querySet'] # Get associated statistics data run_ids = [run.pk for run in searched_runs] qs = TestCaseRun.objects.filter( run__in=run_ids).values('run').annotate(cases_count=Count('case')) cases_subtotal = magic_convert(qs, key_name='run', value_name='cases_count') for run in searched_runs: run_id = run.pk cases_count = cases_subtotal.get(run_id, 0) run.nitrate_stats = { 'cases': cases_count, } else: response_data = { 'sEcho': int(request.GET.get('sEcho', 0)), 'iTotalRecords': 0, 'iTotalDisplayRecords': 0, 'runs': TestRun.objects.none(), } json_data = render_to_string(template_name, response_data, request=request) return HttpResponse(json_data, content_type='application/json')
def recent(request, username, template_name='profile/recent.html'): """List the recent plan/run""" if username != request.user.username: return http.HttpResponseRedirect(reverse('nitrate-login')) else: up = {'user': request.user} runs_query = { 'people': request.user, 'is_active': True, 'status': 'running', } tps = TestPlan.objects.filter(Q(author=request.user) | Q(owner=request.user)) tps = tps.order_by('-plan_id') tps = tps.select_related('product', 'type') tps = tps.extra(select={ 'num_runs': RawSQL.num_runs, }) tps_active = tps.filter(is_active=True) trs = TestRun.list(runs_query) latest_fifteen_testruns = trs.order_by('-run_id')[:15] test_plans_disable_count = tps.count() - tps_active.count() context_data = { 'module': MODULE_NAME, 'user_profile': up, 'test_plans_count': tps.count(), 'test_plans_disable_count': test_plans_disable_count, 'test_runs_count': trs.count(), 'last_15_test_plans': tps_active[:15], 'last_15_test_runs': latest_fifteen_testruns, } return render(request, template_name, context=context_data)
def recent(request, username, template_name='profile/recent.html'): """List the recent plan/run""" if username != request.user.username: return http.HttpResponseRedirect(reverse('tcms-login')) else: up = {'user': request.user} runs_query = { 'people': request.user, 'is_active': True, 'status': 'running', } tps = TestPlan.objects.filter(Q(author=request.user) | Q(owner=request.user)) tps = tps.order_by('-plan_id') tps = tps.select_related('product', 'type') tps = tps.extra(select={ 'num_runs': RawSQL.num_runs, }) tps_active = tps.filter(is_active=True) trs = TestRun.list(runs_query) latest_fifteen_testruns = trs.order_by('-run_id')[:15] test_plans_disable_count = tps.count() - tps_active.count() context_data = { 'user_profile': up, 'test_plans_count': tps.count(), 'test_plans_disable_count': test_plans_disable_count, 'test_runs_count': trs.count(), 'last_15_test_plans': tps_active[:15], 'last_15_test_runs': latest_fifteen_testruns, } return render(request, template_name, context_data)
def search_runs(request): """Search test runs""" search_form = SearchRunForm(request.GET) product_id = request.GET.get('product') search_form.populate(product_id=int(product_id) if product_id else None) runs = TestRun.objects.none() if search_form.is_valid(): runs = (TestRun.list(search_form.cleaned_data).select_related( 'manager', 'default_tester', 'build', 'plan', 'build__product').only( 'run_id', 'summary', 'manager__username', 'default_tester__id', 'default_tester__username', 'plan__name', 'build__product__name', 'stop_date', 'product_version__value').extra( select={'cases_count': RawSQL.total_num_caseruns})) column_names = [ '', 'run_id', 'summary', 'manager__username', 'default_tester__username', 'build__product__name', 'product_version__value', 'env_groups', 'cases_count', 'stop_date', 'completed', ] dt = DataTableResult(request.GET, runs, column_names, default_order_key='-pk') response_data = dt.get_response_data() calculate_associated_data(response_data['querySet']) if 'sEcho' in request.GET: resp_data = (get_template('run/common/json_runs.txt').render( response_data, request)) return JsonResponse(json.loads(resp_data)) else: return render(request, 'run/all.html', context={ 'module': MODULE_NAME, 'sub_module': 'runs', 'object_list': response_data['querySet'], 'search_form': search_form, 'total_count': runs.count() })
def recent(request, username): """List the recent plan/run""" if username != request.user.username: return http.HttpResponseRedirect(reverse('nitrate-login')) plans_subtotal = { item['is_active']: item['count'] for item in TestPlan.objects.values('is_active').annotate( count=Count('pk')) } plans_count = sum(plans_subtotal.values()) disabled_plans_count = plans_subtotal.get(False, 0) plans = (TestPlan.objects.filter( Q(author=request.user) | Q(owner=request.user), is_active=True).select_related('product', 'type').order_by('-plan_id').only( 'name', 'is_active', 'type__name', 'product__name')) plans = TestPlan.apply_subtotal(plans, runs_count=True) runs = (TestRun.list({ 'people': request.user, 'is_active': True, 'status': 'running' }).only('summary', 'start_date').order_by('-run_id')) first_15_runs = runs[:15] subtotal = stats_case_runs_status([item.pk for item in first_15_runs]) for run in first_15_runs: run.case_runs_subtotal = subtotal[run.pk] return render(request, 'profile/recent.html', context={ 'module': MODULE_NAME, 'user_profile': { 'user': request.user }, 'test_plans_count': plans_count, 'test_plans_disable_count': disabled_plans_count, 'test_runs_count': runs.count(), 'last_15_test_plans': plans[:15], 'last_15_test_runs': first_15_runs, })
def pbuild(request, username, product_id, template_name='profile/product_builds.html'): """List the recent plan/run""" if username != request.user.username: return http.HttpResponseRedirect(reverse('tcms-login')) else: up = {'user': request.user} runs_query = { 'people': request.user, 'is_active': True, } product_id = int(product_id) tps = TestPlan.objects.filter( Q(author=request.user) | Q(owner=request.user)) tps = tps.order_by('-plan_id') tps = tps.select_related('product', 'type') tps = tps.extra(select={ 'num_runs': RawSQL.num_runs, }) tps_active = tps.filter(is_active=True) trs = TestRun.list(runs_query) latest_fifteen_testruns = trs.order_by('-run_id')[:15] all_test_runs = trs.order_by('-run_id') test_plans_disable_count = tps.count() - tps_active.count() # My codes prod_builds = { run.build for run in all_test_runs if (run.build.product_id == product_id) } prod_build_count = len(prod_builds) prod = dict() prod[1] = 'MESSAGING' prod[2] = 'VOICE' prod[3] = 'INTERNAL SYSTEM' prod[4] = 'PHLO' prod[5] = 'DATA' prod[6] = 'CONSOLE' prod[7] = 'ZENTRUNK' product = prod[product_id] all_builds = {run.build for run in all_test_runs} build_count = len(all_builds) context_data = { 'user_profile': up, 'test_plans_count': tps.count(), 'test_plans_disable_count': test_plans_disable_count, 'test_runs_count': trs.count(), 'last_15_test_plans': tps_active[:15], 'last_15_test_runs': latest_fifteen_testruns, 'all_builds': all_builds, 'build_count': build_count, 'prod_build_count': prod_build_count, 'prod_builds': prod_builds, 'product_id': product_id, 'username': username, 'product': product, } return render(request, template_name, context_data)