3
from django.db import models
1
4
from django.views.decorators.http import (
6
from django.shortcuts import render_to_response
9
from django.http import HttpResponse
10
from django.shortcuts import (
17
from matplotlib.backends.backend_agg import FigureCanvasAgg
18
from matplotlib.dates import date2num
19
from pylab import figure, plot, gca, plot_date, bar
8
21
from dashboard.models import (
34
47
return render_to_response('bootspeed/overview.html', data)
50
def image_overview(request, image_id):
51
image = get_object_or_404(Image, id=image_id)
55
'results': image.imageresult_set.values('ran_at').annotate(
56
kernel_init_avg=models.Avg('kernel_init'),
57
kernel_init_min=models.Min('kernel_init'),
58
kernel_init_max=models.Max('kernel_init'),
60
kernel_avg=models.Avg('kernel'),
61
kernel_min=models.Min('kernel'),
62
kernel_max=models.Max('kernel'),
64
plumbing_avg=models.Avg('plumbing'),
65
plumbing_min=models.Min('plumbing'),
66
plumbing_max=models.Max('plumbing'),
68
xorg_avg=models.Avg('xorg'),
69
xorg_min=models.Min('xorg'),
70
xorg_max=models.Max('xorg'),
72
desktop_avg=models.Avg('desktop'),
73
desktop_min=models.Min('desktop'),
74
desktop_max=models.Max('desktop'),
76
boot_avg=models.Avg('boot'),
77
boot_min=models.Min('boot'),
78
boot_max=models.Max('boot'),
82
return render_to_response('bootspeed/image_overview.html', data)
86
def build_boot_chart(request, image_id):
87
image = Image.objects.get(id=image_id)
89
end = datetime.datetime.now()
90
start = end - datetime.timedelta(days=CHART_WIDTH_DAYS)
92
x_data, avg_data, max_data, min_data, low_error, hi_error = image.get_chart_data(
97
f = figure(figsize=(12,9)) # inches
98
f.patch.set_alpha(0.0) # transparent background
101
#plot_date(date2num(x_data), avg_data, 'b-')
102
#plot_date(date2num(x_data), max_data, 'g-')
103
#plot_date(date2num(x_data), min_data, 'r-')
105
ax.bar(x_data, avg_data, color='#dd4814', yerr=[low_error, hi_error], ecolor='b')
106
ax.set_title('Bootspeed (sec.)')
107
labels = ax.get_xticklabels()
109
label.set_rotation(90)
110
label.set_size('small')
111
ax.set_xlim(date2num(start), date2num(end))
112
ax.xaxis.set_major_locator(
113
matplotlib.dates.DayLocator()
115
ax.xaxis.set_major_formatter(
116
matplotlib.dates.DateFormatter('%Y%m%d')
118
response = HttpResponse(content_type='image/png')
119
canvas = FigureCanvasAgg(f)
120
canvas.print_png(response, transparent=True)
121
matplotlib.pyplot.close(f)