Gentoo Archives: gentoo-commits

From: Magnus Granberg <zorry@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/tinderbox-cluster-www:master commit in: python/templates/pages/new/repoman/, python/tbc_www/, ...
Date: Tue, 02 Feb 2016 22:43:38
Message-Id: 1454453071.a8fc1c1b6f8201c9165a92147d1e751d0c4436e6.zorry@gentoo
1 commit: a8fc1c1b6f8201c9165a92147d1e751d0c4436e6
2 Author: Magnus Granberg <zorry <AT> gentoo <DOT> org>
3 AuthorDate: Tue Feb 2 22:44:31 2016 +0000
4 Commit: Magnus Granberg <zorry <AT> gentoo <DOT> org>
5 CommitDate: Tue Feb 2 22:44:31 2016 +0000
6 URL: https://gitweb.gentoo.org/proj/tinderbox-cluster-www.git/commit/?id=a8fc1c1b
7
8 add buildinfo to packages
9
10 python/tbc_www/models.py | 15 +++-
11 python/tbc_www/urls.py | 2 +-
12 python/tbc_www/views.py | 96 ++++++++++++++++------
13 python/templates/includes/frontpage/new_repoman | 10 +++
14 python/templates/includes/frontpage/new_repoman_qa | 18 ----
15 python/templates/pages/home/index.html | 4 +-
16 python/templates/pages/new/index.html | 4 +-
17 python/templates/pages/new/logs/build/index.html | 14 +++-
18 .../pages/new/{repomanqa => repoman}/index.html | 22 +----
19 .../templates/pages/packages/category/index.html | 11 +++
20 .../pages/packages/ebuilds/ebuild/index.html | 33 ++++++--
21 python/templates/pages/packages/ebuilds/index.html | 29 +++++--
22 12 files changed, 172 insertions(+), 86 deletions(-)
23
24 diff --git a/python/tbc_www/models.py b/python/tbc_www/models.py
25 index 81f7c59..0d58bc1 100644
26 --- a/python/tbc_www/models.py
27 +++ b/python/tbc_www/models.py
28 @@ -41,7 +41,7 @@ class Packages(models.Model):
29 class Meta:
30 db_table = 'packages'
31 def __str__(self):
32 - return '%s %s %s %s %s %s %s' % (self.PackageId, self.CategoryId, self.Package, self.RepoId, self.Active, self.TimeStamp)
33 + return '%s %s %s %s %s %s' % (self.PackageId, self.CategoryId, self.Package, self.RepoId, self.Active, self.TimeStamp)
34
35 class PackagesMetadata(models.Model):
36 Id = models.IntegerField(primary_key=True, db_column='id')
37 @@ -74,7 +74,7 @@ class EbuildsMetadata(models.Model):
38 class Meta:
39 db_table = 'ebuilds_metadata'
40 def __str__(self):
41 - return '%s %s %s %s' % (self.Id, self.EbuildId, self,Commit, self.New, self.Descriptions)
42 + return '%s %s %s %s %s' % (self.Id, self.EbuildId, self,Commit, self.New, self.Descriptions)
43
44 class BuildLogs(models.Model):
45 BuildLogId = models.IntegerField(primary_key=True, db_column='build_log_id')
46 @@ -89,12 +89,21 @@ class BuildLogs(models.Model):
47 def __str__(self):
48 return '%s %s %s %s %s %s %s' % (self.BuildLogId, self.EbuildId, self.Fail, self.SummeryText, self.LogHash, self.BugId, self.TimeStamp)
49
50 +class BuildLogsRepoman(models.Model):
51 + Id = models.IntegerField(primary_key=True, db_column='id')
52 + BuildLogId = models.ForeignKey(BuildLogs, db_column='build_log_id')
53 + SummeryText = models.TextField(db_column='summery_text')
54 + class Meta:
55 + db_table = 'build_logs_repoman'
56 + def __str__(self):
57 + return '%s %s %s' % (self.Id, self.BuildLogId, self.SummeryText)
58 +
59 class BuildLogsQa(models.Model):
60 Id = models.IntegerField(primary_key=True, db_column='id')
61 BuildLogId = models.ForeignKey(BuildLogs, db_column='build_log_id')
62 SummeryText = models.TextField(db_column='summery_text')
63 class Meta:
64 - db_table = 'build_logs_repoman_qa'
65 + db_table = 'build_logs_qa'
66 def __str__(self):
67 return '%s %s %s' % (self.Id, self.BuildLogId, self.SummeryText)
68
69
70 diff --git a/python/tbc_www/urls.py b/python/tbc_www/urls.py
71 index 6198beb..5be267f 100644
72 --- a/python/tbc_www/urls.py
73 +++ b/python/tbc_www/urls.py
74 @@ -8,6 +8,6 @@ urlpatterns = patterns('tbc_www.views',
75 url(r'^ebuild/(?P<ebuild_id>\d+)/$', 'ebuild'),
76 url(r'^new/logs/build/(?P<buildlog_id>\d+)/$', 'new_logs_build'),
77 url(r'^new/logs/$', 'new_logs'),
78 - url(r'^new/repomanqa/$', 'new_repomanqa'),
79 + url(r'^new/repoman/$', 'new_repoman'),
80 url(r'^new/$', 'new_main'),
81 )
82
83 diff --git a/python/tbc_www/views.py b/python/tbc_www/views.py
84 index 29e561d..29fb520 100644
85 --- a/python/tbc_www/views.py
86 +++ b/python/tbc_www/views.py
87 @@ -8,7 +8,7 @@ from gentoo_www.models import SiteSettings, Layout, Pages, SubPages, Sponsors, P
88 from tbc_www.models import EbuildsMetadata, BuildLogs, BuildJobs, BuildLogsQa, \
89 BuildJobsUse, Categories, CategoriesMetadata, Packages, PackagesMetadata, Ebuilds, \
90 Repos, EbuildsKeywords, BuildLogsErrors, EbuildsRestrictions, EbuildsIuse, PackagesRepoman, \
91 - BuildLogsConfig, BuildLogsUse, BuildLogsQa
92 + BuildLogsConfig, BuildLogsUse, BuildLogsRepoman
93 import re
94
95 def default_TmpDict(pagerequest):
96 @@ -78,8 +78,7 @@ def home(request):
97 adict2['title'] = adict2['title'] + "\n"
98 adict[BJ.BuildJobId] = adict2
99 TmpDict['BJ'] = adict
100 - TmpDict['QA_tmp'] = BuildLogsQa.objects.order_by('-Id')[:Lines/2]
101 - TmpDict['PR_tmp'] = PackagesRepoman.objects.order_by('-Id')[:Lines/2]
102 + TmpDict['PR_tmp'] = PackagesRepoman.objects.order_by('-Id')[:Lines]
103 return render(request, 'pages/' + pagerequest + '/index.html', TmpDict)
104
105 def categories(request):
106 @@ -109,12 +108,24 @@ def packages(request, category_id):
107 adict['Package'] = PM.PackageId.Package
108 adict['Descriptions'] = PM.Descriptions
109 adict['Commitlog'] =PM.Gitlog
110 - try:
111 - PackagesRepoman.objects.get(PackageId__PackageId = PM.PackageId.PackageId)
112 - except PackagesRepoman.DoesNotExist as e:
113 + PR = PackagesRepoman.objects.filter(PackageId__PackageId = PM.PackageId.PackageId)
114 + if PR.exists():
115 + adict['Repoman'] = True
116 + else:
117 adict['Repoman'] = False
118 + BLQ = BuildLogsQa.objects.filter(BuildLogId__EbuildId__PackageId__PackageId = PM.PackageId.PackageId).filter(BuildLogId__EbuildId__Active = True)
119 + if BLQ.exists():
120 + adict['Qa'] = True
121 else:
122 - adict['Repoman'] = True
123 + adict['Qa'] = False
124 + BL = BuildLogs.objects.filter(EbuildId__PackageId__PackageId = PM.PackageId.PackageId).filter(EbuildId__Active = True)
125 + if BL.exists():
126 + adict['Bl'] = True
127 + adict['Blf'] = False
128 + if BL.filter(Fail = True).exists():
129 + adict['Blf'] = True
130 + else:
131 + adict['Bl'] = False
132 ebuilds = []
133 for E in Ebuilds.objects.filter(Active = True).filter(PackageId__Package = PM.PackageId.Package):
134 ebuilds.append(E.Version + '::' + E.PackageId.RepoId.Repo + '\n')
135 @@ -130,13 +141,44 @@ def ebuilds(request, package_id):
136 P = get_object_or_404(PackagesMetadata, PackageId__PackageId = package_id)
137 TmpDict['P'] = P
138 TmpDict['EM_tmp'] = EbuildsMetadata.objects.filter(EbuildId__Active = True).filter(EbuildId__PackageId__Package = P.PackageId.Package)
139 - TmpDict['EK_tmp'] = EbuildsKeywords.objects.filter(EbuildId__Active = True).filter(EbuildId__PackageId__Package = P.PackageId.Package)
140 - try:
141 - PackagesRepoman.objects.get(PackageId__PackageId = package_id)
142 - except PackagesRepoman.DoesNotExist as e:
143 + PR = PackagesRepoman.objects.filter(PackageId__PackageId = package_id)
144 + BLQ_tmp = BuildLogsQa.objects.filter(BuildLogId__EbuildId__PackageId__PackageId = package_id).filter(BuildLogId__EbuildId__Active = True)
145 + BL_tmp = BuildLogs.objects.filter(EbuildId__PackageId__PackageId = package_id).filter(EbuildId__Active = True)
146 + TmpDict['BLQ_tmp'] = BLQ_tmp
147 + TmpDict['BL_tmp'] = BL_tmp
148 + if PR.exists():
149 + TmpDict['PR'] = True
150 + else:
151 TmpDict['PR'] = False
152 + if BLQ_tmp.exists():
153 + TmpDict['QA'] = True
154 else:
155 - TmpDict['PR'] = True
156 + TmpDict['QA'] = False
157 + if BL_tmp.exists():
158 + TmpDict['Bl'] = True
159 + TmpDict['Blf'] = False
160 + if BL_tmp.filter(Fail = True).exists():
161 + TmpDict['Blf'] = True
162 + else:
163 + TmpDict['Bl'] = False
164 + alist = []
165 + for EM in TmpDict['EM_tmp']:
166 + adict = {}
167 + adict['EbuildId'] = EM.EbuildId.EbuildId
168 + adict['fail'] = False
169 + BLe = BuildLogs.objects.filter(EbuildId__EbuildId = EM.EbuildId.EbuildId).filter(EbuildId__Active = True)
170 + if BLe.filter(Fail = True).exists():
171 + adict['fail'] = True
172 + adict['repoman'] = False
173 + BLRe = BuildLogsRepoman.objects.filter(BuildLogId__EbuildId__EbuildId = EM.EbuildId.EbuildId).filter(BuildLogId__EbuildId__Active = True)
174 + if BLRe.exists():
175 + adict['repoman'] = True
176 + adict['qa'] = False
177 + BLQe = BuildLogsQa.objects.filter(BuildLogId__EbuildId__EbuildId = EM.EbuildId.EbuildId).filter(BuildLogId__EbuildId__Active = True)
178 + if BLQe.exists():
179 + adict['qa'] = True
180 + alist.append(adict)
181 + TmpDict['fi_tmp'] = alist
182 return render(request, 'pages/' + pagerequest + '/ebuilds/index.html', TmpDict)
183
184 def ebuild(request, ebuild_id):
185 @@ -145,9 +187,15 @@ def ebuild(request, ebuild_id):
186 TmpDict['E'] = get_object_or_404(Ebuilds, EbuildId = ebuild_id)
187 TmpDict['EM_tmp'] = EbuildsMetadata.objects.filter(EbuildId__EbuildId = ebuild_id)
188 TmpDict['EK_tmp'] = EbuildsKeywords.objects.filter(EbuildId__EbuildId = ebuild_id)
189 - TmpDict['BL_tmp'] = BuildLogs.objects.filter(EbuildId__EbuildId = ebuild_id)
190 + BL_tmp = BuildLogs.objects.filter(EbuildId__EbuildId = ebuild_id)
191 + TmpDict['BL_tmp'] = BL_tmp
192 TmpDict['EU_tmp'] = EbuildsIuse.objects.filter(EbuildId__EbuildId = ebuild_id)
193 TmpDict['ER_tmp'] = EbuildsRestrictions.objects.filter(EbuildId__EbuildId = ebuild_id)
194 + BLQ_tmp = BuildLogsQa.objects.filter(BuildLogId__EbuildId__EbuildId = ebuild_id).filter(BuildLogId__EbuildId__Active = True)
195 + TmpDict['BLQ_tmp'] = BLQ_tmp
196 + BLR_tmp = BuildLogsRepoman.objects.filter(BuildLogId__EbuildId__EbuildId = ebuild_id).filter(BuildLogId__EbuildId__Active = True)
197 + TmpDict['BLR_tmp']= BLR_tmp
198 +
199 return render(request, 'pages/' + pagerequest + '/ebuilds/ebuild/index.html', TmpDict)
200
201 def new_main(request):
202 @@ -200,18 +248,16 @@ def new_main(request):
203 adict2['title'] = adict2['title'] + use + " "
204 adict2['title'] = adict2['title'] + "\n"
205 adict[BJ.BuildJobId] = adict2
206 - TmpDict['BJ'] = adict
207 - TmpDict['QA_tmp'] = BuildLogsQa.objects.order_by('-Id')[:Lines/2]
208 - TmpDict['PR_tmp'] = PackagesRepoman.objects.order_by('-Id')[:Lines/2]
209 + TmpDict['BJ'] = adict
210 + TmpDict['PR_tmp'] = PackagesRepoman.objects.order_by('-Id')[:Lines]
211 return render(request, 'pages/' + pagerequest + '/index.html', TmpDict)
212
213 -def new_repomanqa(request):
214 +def new_repoman(request):
215 pagerequest = 'new'
216 Lines = 30
217 TmpDict = default_TmpDict(pagerequest)
218 - TmpDict['QA_tmp'] = BuildLogsQa.objects.order_by('-Id')[:Lines/2]
219 - TmpDict['PR_tmp'] = PackagesRepoman.objects.order_by('-Id')[:Lines/2]
220 - return render(request, 'pages/' + pagerequest + '/repomanqa/index.html', TmpDict)
221 + TmpDict['PR_tmp'] = PackagesRepoman.objects.order_by('-Id')[:Lines]
222 + return render(request, 'pages/' + pagerequest + '/repoman/index.html', TmpDict)
223
224 def new_logs(request):
225 pagerequest = 'new'
226 @@ -291,9 +337,13 @@ def new_logs_build(request, buildlog_id):
227 BLI['use_disable'] = use_disable
228 try:
229 BRQ = BuildLogsQa.objects.get(BuildLogId = B.BuildLogId)
230 - BLI['RepomanQA'] = BRQ.SummeryText
231 + BLI['QA'] = BRQ.SummeryText
232 except BuildLogsQa.DoesNotExist as e:
233 - BLI['RepomanQA'] = False
234 - print(BLI)
235 + BLI['QA'] = False
236 + try:
237 + BRR = BuildLogsRepoman.objects.get(BuildLogId = B.BuildLogId)
238 + BLI['Repoman'] = BRR.SummeryText
239 + except BuildLogsRepoman.DoesNotExist as e:
240 + BLI['Repoman'] = False
241 TmpDict['BLI'] = BLI
242 return render(request, 'pages/' + pagerequest + '/logs/build/index.html', TmpDict)
243 \ No newline at end of file
244
245 diff --git a/python/templates/includes/frontpage/new_repoman b/python/templates/includes/frontpage/new_repoman
246 new file mode 100644
247 index 0000000..1e54e2b
248 --- /dev/null
249 +++ b/python/templates/includes/frontpage/new_repoman
250 @@ -0,0 +1,10 @@
251 +<table class="table table-striped frontpage-table">
252 + {% for PR in PR_tmp %}
253 + <tr>
254 + <td class="frontpage-table-package-atom"><a href="/repoman/{{ PR.PackageId.PackageId }}/" title="{{ PR.PackageId.CategoryId.Category }}/{{ PR.PackageId.Package }}::{{ PR.PackageId.RepoId.Repo }}">
255 + {{ PR.PackageId.CategoryId.Category }}/{{ PR.PackageId.Package }}::{{ PR.PackageId.RepoId.Repo }}</a>
256 + </td>
257 + <td><p title="{{ PR.RepomanText }}">{{ PR.RepomanText|truncatewords:3 }}</p></td>
258 + </tr>
259 + {% endfor %}
260 +</table>
261
262 diff --git a/python/templates/includes/frontpage/new_repoman_qa b/python/templates/includes/frontpage/new_repoman_qa
263 deleted file mode 100644
264 index 61ac691..0000000
265 --- a/python/templates/includes/frontpage/new_repoman_qa
266 +++ /dev/null
267 @@ -1,18 +0,0 @@
268 -<table class="table table-striped frontpage-table">
269 - {% for QA in QA_tmp %}
270 - <tr>
271 - <td class="frontpage-table-package-atom"><a href="/repoman_qa/{{ QA.BuildLogId.BuildLogId }}/" title="{{ QA.BuildLogId.EbuildId.PackageId.CategoryId.Category }}/{{ QA.BuildLogId.EbuildId.PackageId.Package }}-{{ QA.BuildLogId.EbuildId.Version }}::{{ QA.BuildLogId.EbuildId.PackageId.RepoId.Repo }}">
272 - {{ QA.BuildLogId.EbuildId.PackageId.CategoryId.Category }}/{{ QA.BuildLogId.EbuildId.PackageId.Package }}-{{ QA.BuildLogId.EbuildId.Version }}::{{ QA.BuildLogId.EbuildId.PackageId.RepoId.Repo }}</a>
273 - </td>
274 - <td><p title="{{ QA.SummeryText }}">{{ QA.SummeryText|truncatewords:3 }}</p></td>
275 - </tr>
276 - {% endfor %}
277 - {% for PR in PR_tmp %}
278 - <tr>
279 - <td class="frontpage-table-package-atom"><a href="/repoman/{{ PR.PackageId.PackageId }}/" title="{{ PR.PackageId.CategoryId.Category }}/{{ PR.PackageId.Package }}::{{ PR.PackageId.RepoId.Repo }}">
280 - {{ PR.PackageId.CategoryId.Category }}/{{ PR.PackageId.Package }}::{{ PR.PackageId.RepoId.Repo }}</a>
281 - </td>
282 - <td><p title="{{ PR.RepomanText }}">{{ PR.RepomanText|truncatewords:3 }}</p></td>
283 - </tr>
284 - {% endfor %}
285 -</table>
286 \ No newline at end of file
287
288 diff --git a/python/templates/pages/home/index.html b/python/templates/pages/home/index.html
289 index c355c11..570202e 100644
290 --- a/python/templates/pages/home/index.html
291 +++ b/python/templates/pages/home/index.html
292 @@ -18,8 +18,8 @@
293 {% include "includes/frontpage/new_build_req" %}
294 </div>
295 <div class="col-xs-12 col-md-6">
296 - <h2>New Repoman or QA's <small>on the <a href="/new/repomanqa/">New Repoman or QA's</a></small></h2>
297 - {% include "includes/frontpage/new_repoman_qa" %}
298 + <h2>New Repoman's <small>on the <a href="/new/repoman/">New Repoman's</a></small></h2>
299 + {% include "includes/frontpage/new_repoman" %}
300 </div>
301 </div>
302
303
304 diff --git a/python/templates/pages/new/index.html b/python/templates/pages/new/index.html
305 index 608b40e..085f180 100644
306 --- a/python/templates/pages/new/index.html
307 +++ b/python/templates/pages/new/index.html
308 @@ -17,8 +17,8 @@
309 {% include "includes/frontpage/new_build_req" %}
310 </div>
311 <div class="col-xs-12 col-md-6">
312 - <h2>New Repoman or QA's <small>on the <a href="/new/repomanqa/">New Repoman or QA's</a></small></h2>
313 - {% include "includes/frontpage/new_repoman_qa" %}
314 + <h2>New Repoman's <small>on the <a href="/new/repoman/">New Repoman's</a></small></h2>
315 + {% include "includes/frontpage/new_repoman" %}
316 </div>
317 </div>
318
319
320 diff --git a/python/templates/pages/new/logs/build/index.html b/python/templates/pages/new/logs/build/index.html
321 index 487a397..5c2a9b6 100644
322 --- a/python/templates/pages/new/logs/build/index.html
323 +++ b/python/templates/pages/new/logs/build/index.html
324 @@ -54,9 +54,17 @@
325 </div>
326 <div class="row-fluid">
327 <div class=span12>
328 - {% if BLI.RepomanQA %}
329 - <p class="lead">Repoman QA Summery: </p>
330 - {{ BLI.RepomanQA|linebreaks }}
331 + {% if BLI.Repoman %}
332 + <p class="lead">Repoman Summery: </p>
333 + {{ BLI.Repoman|linebreaks }}
334 + {% endif %}
335 + </div>
336 + </div>
337 + <div class="row-fluid">
338 + <div class=span12>
339 + {% if BLI.QA %}
340 + <p class="lead">QA Summery: </p>
341 + {{ BLI.QA|linebreaks }}
342 {% endif %}
343 </div>
344 </div>
345
346 diff --git a/python/templates/pages/new/repomanqa/index.html b/python/templates/pages/new/repoman/index.html
347 similarity index 50%
348 rename from python/templates/pages/new/repomanqa/index.html
349 rename to python/templates/pages/new/repoman/index.html
350 index 637c917..7df33e9 100644
351 --- a/python/templates/pages/new/repomanqa/index.html
352 +++ b/python/templates/pages/new/repoman/index.html
353 @@ -1,25 +1,8 @@
354 {% extends "layout/base.html" %}
355 {% block content %}
356 <div class="row">
357 - <h2>New Repoman and QA's</h2>
358 + <h2>New Repoman's</h2>
359 <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
360 - {% for QA in QA_tmp %}
361 - <div class="panel panel-default">
362 - <div class="panel-heading" role="tab" id="heading{{ QA.Id }}">
363 - <h4 class="panel-title">
364 - <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapse{{ QA.Id }}" aria-expanded="false" aria-controls="collapse{{ Qa.Id }}">
365 - {{ QA.BuildLogId.EbuildId.PackageId.CategoryId.Category }}/{{ QA.BuildLogId.EbuildId.PackageId.Package }}-{{ QA.BuildLogId.EbuildId.Version }}::{{ QA.BuildLogId.EbuildId.PackageId.RepoId.Repo }}
366 - {{ QA.SummeryText|truncatewords:6 }}
367 - </a>
368 - </h4>
369 - </div>
370 - <div id="collapse{{ QA.Id }}" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="heading{{ QA.Id }}">
371 - <div class="panel-body">
372 - {{ QA.SummeryText|linebreaksbr }}
373 - </div>
374 - </div>
375 - </div>
376 - {% endfor %}
377 {% for PR in PR_tmp %}
378 <div class="panel panel-default">
379 <div class="panel-heading" role="tab" id="heading{{ PR.Id }}">
380 @@ -39,5 +22,4 @@
381 {% endfor %}
382 </div>
383 </div>
384 -
385 -{% endblock %}
386 \ No newline at end of file
387 +{% endblock %}
388
389 diff --git a/python/templates/pages/packages/category/index.html b/python/templates/pages/packages/category/index.html
390 index 7bad0b4..d86b3cb 100644
391 --- a/python/templates/pages/packages/category/index.html
392 +++ b/python/templates/pages/packages/category/index.html
393 @@ -16,6 +16,17 @@
394 {% if PM.Repoman %}
395 <a class="btn btn-warning btn-xs" href="/repoman/{{PM.PackageId }}/">Repoman</a>
396 {% endif %}
397 + {% if PM.Qa %}
398 + <a class="btn btn-warning btn-xs" >Qa</a>
399 + {% endif %}
400 + {% if PM.Bl %}
401 + {% if PM.Blf %}
402 + <a class="btn btn-danger btn-xs">
403 + {% else %}
404 + <a class="btn btn-success btn-xs">
405 + {% endif %}
406 + Build</a>
407 + {% endif %}
408 </p>
409 </td>
410 </tr>
411
412 diff --git a/python/templates/pages/packages/ebuilds/ebuild/index.html b/python/templates/pages/packages/ebuilds/ebuild/index.html
413 index e000a53..4752be1 100644
414 --- a/python/templates/pages/packages/ebuilds/ebuild/index.html
415 +++ b/python/templates/pages/packages/ebuilds/ebuild/index.html
416 @@ -9,13 +9,6 @@
417 <td class="frontpage-table-package-atom">
418 <p" title="{{ E.PackageId.CategoryId.Category }}/{{ E.PackageId.Package }}-{{ E.EbuildId.Version }}::{{ E.PackageId.RepoId.Repo }}">{{ E.PackageId.Package }}-{{ E.Version }}::{{ E.PackageId.RepoId.Repo }}</p>
419 <a class="btn btn-default btn-xs" href="/buildpackage/{{ E.EbuildId.EbuildId }}/">Build</a>
420 - {% for BL in BL_tmp %}
421 - {% if BL.Fail %}
422 - <a class="btn btn-danger btn-xs" href="/buildlog/{{ BL.BuildLogId }}/">Fail</a>
423 - {% else %}
424 - <a class="btn btn-success btn-xs" href="/buildlog/{{ BL.BuildLogId }}/">Success</a>
425 - {% endif %}
426 - {% endfor %}
427 </td>
428 <td>
429 {% for K in EK_tmp %}
430 @@ -43,5 +36,31 @@
431 {% endfor %}
432 </table>
433 </div>
434 + <div class="col-xs-12 col-md-9">
435 + <table class="table table-striped frontpage-table">
436 + {% for BL in BL_tmp %}
437 + <tr>
438 + <td class="frontpage-table-package-atom">
439 + {% if BL.Fail %}
440 + <span class="label label-danger">Build</span>
441 + {% else %}
442 + <span class="label label-success">Build</span>
443 + {% endif %}
444 + {% for BLR in BLR_tmp %}
445 + {% if BLR.BuildLogId.BuildLogId == BL.BuildLogId%}
446 + <span class="label label-danger">Repoman</span>
447 + {% endif %}
448 + {% endfor %}
449 + {% for BLQ in BLQ_tmp %}
450 + {% if BLQ.BuildLogId.BuildLogId == BL.BuildLogId%}
451 + <span class="label label-danger">Qa</span>
452 + {% endif %}
453 + {% endfor %}
454 + <a class="btn btn-default btn-xs" href="/new/logs/build/{{ BL.BuildLogId }}/">More info</a>
455 + </td>
456 + </tr>
457 + {% endfor %}
458 + </table>
459 + </div>
460 </div>
461 {% endblock %}
462 \ No newline at end of file
463
464 diff --git a/python/templates/pages/packages/ebuilds/index.html b/python/templates/pages/packages/ebuilds/index.html
465 index b941c62..a9cef7d 100644
466 --- a/python/templates/pages/packages/ebuilds/index.html
467 +++ b/python/templates/pages/packages/ebuilds/index.html
468 @@ -11,13 +11,17 @@
469 <td class="frontpage-table-package-atom">
470 <a href="/ebuild/{{ E.EbuildId.EbuildId }}/" title="{{ P.PackageId.CategoryId.Category }}/{{ P.PackageId.Package }}-{{ E.EbuildId.Version }}::{{ E.EbuildId.PackageId.RepoId.Repo }}">{{ P.PackageId.Package }}-{{ E.EbuildId.Version }}::{{ E.EbuildId.PackageId.RepoId.Repo }}</a></td>
471 <td>
472 - {% for K in EK_tmp %}
473 - {% if K.EbuildId.EbuildId == E.EbuildId.EbuildId and K.KeywordId.Keyword != '*' %}
474 - {% if K.Status == 'Stable' %}<span class="label label-success">{{ K.KeywordId.Keyword }}</span>{% endif %}
475 - {% if K.Status == 'Unstable' %}<span class="label label-warning">{{ K.KeywordId.Keyword }}</span>{% endif %}
476 - {% if K.Status == 'Negative' %}{{ K.KeywordId.Keyword }}{% endif %}
477 - {% endif %}
478 - {% endfor %}
479 + {% for FI in fi_tmp %}
480 + {% if FI.EbuildId == E.EbuildId.EbuildId %}
481 + {% if FI.qa %}<span class="label label-warning">Qa</span>{% endif %}
482 + {% if FI.repoman %}<span class="label label-warning">Repoman</span>{% endif %}
483 + {% if FI.fail %}
484 + <span class="label label-danger">Build</span>
485 + {% else %}
486 + <span class="label label-success">Build</span>
487 + {% endif %}
488 + {% endif %}
489 + {% endfor %}
490 </td>
491 </tr>
492 {% endfor %}
493 @@ -26,5 +30,16 @@
494 {% if PR %}
495 <a class="btn btn-warning btn-xs" href="/repoman/{{P.PackageId.PackageId }}/">Repoman</a>
496 {% endif %}
497 + {% if QA %}
498 + <a class="btn btn-warning btn-xs" href="/qa/{{P.PackageId.PackageId }}/">Qa</a>
499 + {% endif %}
500 + {% if Bl %}
501 + {% if Blf %}
502 + <a class="btn btn-danger btn-xs">
503 + {% else %}
504 + <a class="btn btn-success btn-xs">
505 + {% endif %}
506 + Build</a>
507 + {% endif %}
508 </div>
509 {% endblock %}
510 \ No newline at end of file