Merge lp:~cjohnston/helipad/remove-hard-coding into lp:helipad/graphics

Proposed by Chris Johnston
Status: Work in progress
Proposed branch: lp:~cjohnston/helipad/remove-hard-coding
Merge into: lp:helipad/graphics
Prerequisite: lp:~cjohnston/helipad/more-graphics-stuff
Diff against target: 230 lines (+75/-53)
10 files modified
dashboard.py (+1/-1)
management/commands/jenkins_pull_phoronix.py (+1/-0)
migrations/0001_initial.py (+4/-2)
models.py (+2/-1)
static/graphics/js/phoronix.js (+2/-0)
templates/graphics/graphics_layout.html (+3/-3)
templates/graphics/help.html (+3/-0)
templates/graphics/overview.html (+22/-0)
urls.py (+5/-3)
views.py (+32/-43)
To merge this branch: bzr merge lp:~cjohnston/helipad/remove-hard-coding
Reviewer Review Type Date Requested Status
helipad-team Pending
Review via email: mp+181979@code.launchpad.net
To post a comment you must log in.
27. By Chris Johnston

Updates

Unmerged revisions

27. By Chris Johnston

Updates

26. By Chris Johnston

Begin the process of removing hard coding

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'dashboard.py'
2--- dashboard.py 2013-08-21 19:19:40 +0000
3+++ dashboard.py 2013-08-25 15:52:26 +0000
4@@ -17,7 +17,7 @@
5 LINKS = [
6 {
7 'name': 'graphics',
8- 'url': reverse_lazy('openarena'),
9+ 'url': reverse_lazy('graphics_overview'),
10 'label': 'Graphics',
11 'index': 800,
12 },
13
14=== modified file 'management/commands/jenkins_pull_phoronix.py'
15--- management/commands/jenkins_pull_phoronix.py 2013-08-25 15:52:26 +0000
16+++ management/commands/jenkins_pull_phoronix.py 2013-08-25 15:52:26 +0000
17@@ -136,6 +136,7 @@
18 jenkins_url=url_file,
19 test_resolution=dic['options'],
20 framework='utah',
21+ testsuite=dic['name'],
22 )
23
24 job_list = []
25
26=== modified file 'migrations/0001_initial.py'
27--- migrations/0001_initial.py 2013-08-25 15:52:26 +0000
28+++ migrations/0001_initial.py 2013-08-25 15:52:26 +0000
29@@ -57,7 +57,8 @@
30 ('machine', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['graphics.GraphicsMachine'])),
31 ('jenkins_build', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['common.JenkinsBuild'], null=True)),
32 ('test_resolution', self.gf('django.db.models.fields.CharField')(max_length=4096)),
33- ('framework', self.gf('django.db.models.fields.CharField')(max_length=128)),
34+ ('framework', self.gf('django.db.models.fields.CharField')(max_length=4096)),
35+ ('testsuite', self.gf('django.db.models.fields.CharField')(max_length=4096)),
36 ))
37 db.send_create_signal('graphics', ['GraphicsMetric'])
38
39@@ -143,7 +144,7 @@
40 'Meta': {'object_name': 'GraphicsMetric', 'db_table': "'graphics_metrics'"},
41 'average': ('django.db.models.fields.FloatField', [], {'default': '0'}),
42 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
43- 'framework': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
44+ 'framework': ('django.db.models.fields.CharField', [], {'max_length': '4096'}),
45 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
46 'image': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['graphics.GraphicsImage']", 'null': 'True'}),
47 'internal': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
48@@ -157,6 +158,7 @@
49 'ran_at': ('django.db.models.fields.DateTimeField', [], {}),
50 'stddev': ('django.db.models.fields.FloatField', [], {'default': '0'}),
51 'test_resolution': ('django.db.models.fields.CharField', [], {'max_length': '4096'}),
52+ 'testsuite': ('django.db.models.fields.CharField', [], {'max_length': '4096'}),
53 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
54 }
55 }
56
57=== modified file 'models.py'
58--- models.py 2013-08-25 15:52:26 +0000
59+++ models.py 2013-08-25 15:52:26 +0000
60@@ -53,7 +53,8 @@
61 # build description - charfield
62 # ran_at
63 test_resolution = models.CharField(max_length=4096)
64- framework = models.CharField(max_length=128)
65+ framework = models.CharField(max_length=4096)
66+ testsuite = models.CharField(max_length=4096)
67 # name - charfield
68 # minimum - float
69 # maximum - float
70
71=== modified file 'static/graphics/js/phoronix.js'
72--- static/graphics/js/phoronix.js 2013-08-25 15:52:26 +0000
73+++ static/graphics/js/phoronix.js 2013-08-25 15:52:26 +0000
74@@ -1,5 +1,7 @@
75 function create_phoronix_chart(data_url, chart_name){
76 d3.json(data_url, function(data) {
77+ var chart_size = 400
78+ document.querySelector('div#' + chart_name).style.height = chart_size + "px";
79
80 nv.addGraph(function() {
81 var chart = nv.models.multiBarChart()
82
83=== modified file 'templates/graphics/graphics_layout.html'
84--- templates/graphics/graphics_layout.html 2013-08-16 18:53:01 +0000
85+++ templates/graphics/graphics_layout.html 2013-08-25 15:52:26 +0000
86@@ -12,7 +12,7 @@
87
88
89 {% block sub_nav_links %}
90-<li {% ifequal url.1 'openarena' %}class="active"{% endifequal %}><a class="sub-nav-item" href='{% url openarena %}'>openarena</a></li>
91-<li {% ifequal url.1 'guitoolkits' %}class="active"{% endifequal %}><a class="sub-nav-item" href='{% url guitoolkits %}'>gui-toolkits</a></li>
92-<li {% ifequal url.1 'nexuiz' %}class="active"{% endifequal %}><a class="sub-nav-item" href='{% url nexuiz %}'>nexuiz</a></li>
93+<li {% ifequal url.1 'openarena' %}class="active"{% endifequal %}><a class="sub-nav-item" href='{% url graphics_overview "openarena" %}'>openarena</a></li>
94+<li {% ifequal url.1 'guitoolkits' %}class="active"{% endifequal %}><a class="sub-nav-item" href='{% url graphics_overview "guitoolkits" %}'>gui-toolkits</a></li>
95+<li {% ifequal url.1 'nexuiz' %}class="active"{% endifequal %}><a class="sub-nav-item" href='{% url graphics_overview "nexuiz" %}'>nexuiz</a></li>
96 {% endblock %}
97
98=== added file 'templates/graphics/help.html'
99--- templates/graphics/help.html 1970-01-01 00:00:00 +0000
100+++ templates/graphics/help.html 2013-08-25 15:52:26 +0000
101@@ -0,0 +1,3 @@
102+<a class="css-tooltip no-border" href="#"><div class="help">?</div><span class="classic">
103+ Legend help: Double click a machine to disable all other machines; single click a machine to enable/disable that machine. Double click bar to see build results for the jobs in Jenkins.
104+</span></a>
105
106=== added file 'templates/graphics/overview.html'
107--- templates/graphics/overview.html 1970-01-01 00:00:00 +0000
108+++ templates/graphics/overview.html 2013-08-25 15:52:26 +0000
109@@ -0,0 +1,22 @@
110+{% extends "graphics/graphics_layout.html" %}
111+{% load dashboard_extras staticfiles %}
112+
113+{% block page_name %}{{ testsuite|capfirst }} graphics benchmarking for XMir{% endblock %}
114+
115+{% block content %}
116+<div class='grid_15'>
117+ <h2>
118+ {{ testsuite|capfirst }} @ {{ resolution }}
119+ {% include "graphics/help.html" %}
120+ </h2>
121+ {% for machine in machines %}
122+ <h3>{{ machine.gfx_manufacturer }}</h3>
123+ <script>
124+ create_phoronix_chart("{% url graphics_api_result_filter_resolution testsuite machine.gfx_manufacturer resolution %}", "{{ machine.gfx_manufacturer }}", "https://jenkins.qa.ubuntu.com/view/MIR/view/{{ machine.gfx_manufacturer }}")
125+ </script>
126+ <div id="{{ machine.gfx_manufacturer }}">
127+ <svg></svg>
128+ </div>
129+ {% endfor %}
130+</div>
131+{% endblock %}
132
133=== modified file 'urls.py'
134--- urls.py 2013-08-09 20:40:01 +0000
135+++ urls.py 2013-08-25 15:52:26 +0000
136@@ -6,7 +6,9 @@
137
138 urlpatterns = patterns(
139 'graphics.views',
140- url(r'^openarena/$', 'openarena', name='openarena'),
141- url(r'^guitoolkits/$', 'gui_toolkits', name='guitoolkits'),
142- url(r'^nexuiz/$', 'nexuiz', name='nexuiz')
143+ url(
144+ r'^(?:(?P<testsuite>\w+)/)?(?:(?P<resolution>\w+)/)?$',
145+ 'overview',
146+ name='graphics_overview',
147+ ),
148 )
149
150=== modified file 'views.py'
151--- views.py 2013-08-21 16:28:33 +0000
152+++ views.py 2013-08-25 15:52:26 +0000
153@@ -1,45 +1,34 @@
154 from django.template import RequestContext
155 from django.views.decorators.http import require_GET
156-from django.shortcuts import render_to_response
157-
158-
159-@require_GET
160-def openarena(request):
161-
162- data = {'help_info': str("""
163- Double click circle to disable all other results.
164- Single click circle to enable/disable result.
165- Double click bar to see build results for all Openarena jobs
166- on jenkins.""")}
167-
168- return render_to_response('graphics/openarena.html',
169- data,
170- RequestContext(request))
171-
172-
173-@require_GET
174-def gui_toolkits(request):
175-
176- data = {'help_info': str("""
177- Double click circle to disable all other results.
178- Single click circle to enable/disable result.
179- Double click bar to see build results for all Gui-toolkits jobs
180- on jenkins""")}
181-
182- return render_to_response('graphics/guitoolkits.html',
183- data,
184- RequestContext(request))
185-
186-
187-@require_GET
188-def nexuiz(request):
189-
190- data = {'help_info': str("""
191- Double click circle to disable all other results.
192- Single click circle to enable/disable result.
193- Double click bar to see build results for all Nexuiz jobs
194- on jenkins""")}
195-
196- return render_to_response('graphics/nexuiz.html',
197- data,
198- RequestContext(request))
199+from django.shortcuts import render_to_response, redirect
200+
201+from graphics.models import GraphicsMachine
202+
203+
204+@require_GET
205+def overview(request, testsuite=None, resolution=None):
206+
207+ if testsuite is None:
208+ testsuite = 'openarena'
209+ return redirect('openarena/')
210+
211+ if resolution is None:
212+ resolution = '1024x768'
213+
214+ machines = GraphicsMachine.objects.filter(
215+ publish=True,
216+ graphicsmetric__testsuite=testsuite,
217+ graphicsmetric__test_resolution=resolution,
218+ ).distinct('gfx_manufacturer')
219+ print machines
220+ data = {
221+ 'machines': machines,
222+ 'testsuite': testsuite,
223+ 'resolution': resolution,
224+ }
225+
226+ return render_to_response(
227+ 'graphics/overview.html',
228+ data,
229+ RequestContext(request),
230+ )

Subscribers

People subscribed via source and target branches

to all changes: