~canonical-platform-qa/qlbr/trunk

« back to all changes in this revision

Viewing changes to qlbr/views.py

Merged django-templates-instead-of-mako.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!/usr/bin/env python
2
1
 
3
2
import datetime
 
3
import json
4
4
import re
5
5
 
6
 
from django.core.management.base import BaseCommand
 
6
from django.shortcuts import render
7
7
from mako.template import Template
8
8
 
9
9
from qlbr import TZ
10
10
from qlbr.models import Task
11
11
 
12
12
 
13
 
class Command(BaseCommand):
14
 
 
15
 
    def handle(self, *args, **options):
16
 
        tasks = {}
17
 
        for task in Task.objects.iterator():
18
 
            bugid = task.bug.bug_id
19
 
            report_task = {
20
 
                'title': task.bug.title,
21
 
                'taglist': task.bug.tag_list,
22
 
                'date_created': task.date_created.isoformat(),
23
 
                'age': (datetime.datetime.now(TZ) - task.date_created).days,
24
 
                'importance': task.importance,
25
 
                'status': task.status,
26
 
                'web_link': task.web_link,
27
 
                'duplicate_link': '',
28
 
                'owner': task.owner.display_name,
29
 
                'triaged': task.triaged
30
 
            }
31
 
            dupe_of = task.bug.duplicate_of
32
 
            if dupe_of:
33
 
                report_task['duplicate_link'] = ('<a href="{}">{}</a>'
34
 
                                                 .format(task.web_link, bugid))
35
 
                report_task['owner'] += ' (dup)'
36
 
                bugid = dupe_of.bug_id
37
 
                report_task['web_link'] = dupe_of.web_link
38
 
                report_task['triaged'] = dupe_of.triaged
39
 
 
40
 
            # Pilfered from collect-bug-data in lp:arsenal
41
 
            m = re.search('(\S+)\s\(.*\)', task.bug_target_name)
42
 
            if m is not None:
43
 
                report_task['target'] = m.group(1)
44
 
            else:
45
 
                report_task['target'] = task.bug_target_name
46
 
            m = re.search('(\S+)\s\(.*\)', task.bug_target_display_name)
47
 
            if m is not None:
48
 
                report_task['target_display_name'] = m.group(1)
49
 
            else:
50
 
                report_task['target_display_name'] = task.bug_target_display_name
51
 
        
52
 
            report_task['target'] = report_task['target'].replace('.', '')
53
 
            if task.assignee:
54
 
                report_task['assignee'] = task.assignee.display_name
55
 
            else:
56
 
                report_task['assignee'] = 'Unassigned'
57
 
            if bugid not in tasks:
58
 
                tasks[bugid] = []
59
 
            tasks[bugid].append(report_task)
60
 
 
61
 
        template = Template(filename='qa-default.mako')
62
 
        open('test.html', 'w').write(template.render(
63
 
            report_title='Test',
64
 
            tasks=tasks,
65
 
            timestamp=datetime.datetime.now().isoformat(),
66
 
            datefilter=True
67
 
        ))
 
13
def index(request):
 
14
 
 
15
    tasks = {}
 
16
    for task in Task.objects.iterator():
 
17
        bugid = task.bug.bug_id
 
18
        report_task = {
 
19
            'title': task.bug.title,
 
20
            'taglist': task.bug.tag_list,
 
21
            'date_created': task.date_created.isoformat(),
 
22
            'age': (datetime.datetime.now(TZ) - task.date_created).days,
 
23
            'importance': task.importance,
 
24
            'status': task.status,
 
25
            'web_link': task.web_link,
 
26
            'duplicate_link': '',
 
27
            'owner': task.owner.display_name,
 
28
            'triaged': task.triaged
 
29
        }
 
30
        dupe_of = task.bug.duplicate_of
 
31
        if dupe_of:
 
32
            report_task['duplicate_link'] = ('<a href="{}">{}</a>'
 
33
                                             .format(task.web_link, bugid))
 
34
            report_task['owner'] += ' (dup)'
 
35
            bugid = dupe_of.bug_id
 
36
            report_task['web_link'] = dupe_of.web_link
 
37
            report_task['triaged'] = dupe_of.triaged
 
38
 
 
39
        # Pilfered from collect-bug-data in lp:arsenal
 
40
        m = re.search('(\S+)\s\(.*\)', task.bug_target_name)
 
41
        if m is not None:
 
42
            report_task['target'] = m.group(1)
 
43
        else:
 
44
            report_task['target'] = task.bug_target_name
 
45
        m = re.search('(\S+)\s\(.*\)', task.bug_target_display_name)
 
46
        if m is not None:
 
47
            report_task['target_display_name'] = m.group(1)
 
48
        else:
 
49
            report_task['target_display_name'] = task.bug_target_display_name
 
50
    
 
51
        report_task['target'] = report_task['target'].replace('.', '')
 
52
        if task.assignee:
 
53
            report_task['assignee'] = task.assignee.display_name
 
54
        else:
 
55
            report_task['assignee'] = 'Unassigned'
 
56
        if bugid not in tasks:
 
57
            tasks[bugid] = []
 
58
        tasks[bugid].append(report_task)
 
59
 
 
60
    targets = {}
 
61
    for bugid in tasks:
 
62
        for task in tasks[bugid]:
 
63
            target = task['target']
 
64
            name = task['target_display_name']
 
65
            if target in targets:
 
66
                if target != name:
 
67
                    targets[target] = name
 
68
            else:
 
69
                targets[target] = name
 
70
    target_report_order = sorted([(targets[target], target) for target in targets])
 
71
    tasks_json_dump = json.dumps(tasks, sort_keys=True, indent=4)
 
72
    context = {'report_title': 'Test',
 
73
               'tasks': tasks,
 
74
               'timestamp': datetime.datetime.now().isoformat(),
 
75
               'datefilter': True,
 
76
               'target_report_order': target_report_order,
 
77
               'tasks_json_dump': tasks_json_dump}
 
78
    return render(request, 'qlbr/qa-default.html', context)