aboutsummaryrefslogtreecommitdiff
path: root/testmanager/buildtestresults/templatetags/buildtestresults.py
blob: 29ba513cb5871496130d2e7ab7d6e718dbe74a17 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from django.template.defaultfilters import stringfilter
from django.utils.safestring import mark_safe
from django import template

from testmanager.buildtestresults import models

register = template.Library()

@register.filter
@stringfilter
def zerowidthspace_separator(value, num):
    """
    Add zero-width space every num chars in string
    """
    num = int(num)
    locations = range(0, len(value), num)[1:] # loc to insert

    new_value = value[:num]

    for loc in locations:
        if loc + num < len(value):
            new_value += '&#8203;' + value[loc:(loc+num)]
        else:
            new_value += '&#8203;' + value[loc:] # last substring may have less than num chars

    return mark_safe(new_value)

@register.filter
@stringfilter
def comma_separator(value):
    """
    Add zero-width space after every comma
    """
    new_value = value.replace(",", ",&#8203;")
    return mark_safe(new_value)

@register.simple_tag
def aggregate_test_status(test_job_url):
    # job URL should be unique
    try:
        testjobs_results = models.TestSuite.objects.filter(testjoburl=test_job_url).values_list('result', flat=True)
        return models._aggregate_status(testjobs_results)
    except Exception,e:
        pass
    return ""

@register.simple_tag
def aggregate_test_job_status(test_job_url):
    # job URL should be unique
    try:
        testjobs_results = models.TestSuite.objects.filter(testjoburl=test_job_url).values_list('testjobstatus', flat=True)
        return testjobs_results[0]
    except Exception,e:
        pass
    return ""

@register.simple_tag
def aggregate_test_results(test_job_url):
    # job URL should be unique
    try:
        executed = sum(models.TestSuite.objects.filter(testjoburl=test_job_url).values_list('executed', flat=True))
        passed = sum(models.TestSuite.objects.filter(testjoburl=test_job_url).values_list('passed', flat=True))
        failed = sum(models.TestSuite.objects.filter(testjoburl=test_job_url).values_list('failed', flat=True))
        return "<strong>executed:</strong> {0} <strong>passed</strong> {1} <strong>failed:</strong> {2}".format(executed, passed, failed)
    except Exception,e:
        print e
        pass
    return ""