예제 #1
0
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)
예제 #2
0
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')
예제 #3
0
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)
예제 #4
0
파일: views.py 프로젝트: xbln/Kiwi
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)
예제 #5
0
파일: views.py 프로젝트: artjoman/Nitrate
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()
                      })
예제 #6
0
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,
                  })
예제 #7
0
파일: views.py 프로젝트: yrpdirox/Kiwi-tcms
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)