Skip to content

Commit 36989dd

Browse files
encukoum-aciek
andauthored
Handle/style branch with no builds (GH-671)
Co-authored-by: Maciej Olko <maciej.olko@gmail.com>
1 parent f13cb72 commit 36989dd

3 files changed

Lines changed: 48 additions & 21 deletions

File tree

master/custom/release_dashboard.py

Lines changed: 33 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -301,20 +301,28 @@ def title(self):
301301
@cached_sorted_property()
302302
def problems(self):
303303
problems = []
304+
for builder in self.builders:
305+
if builder.problems:
306+
problems.extend(builder.problems)
307+
else:
308+
problems.append(NoProblem(builder))
309+
return problems
310+
311+
@cached_sorted_property()
312+
def builders(self):
304313
for builder in self._root.builders:
305314
if builder.branch == self:
306-
if builder.problems:
307-
problems.extend(builder.problems)
308-
else:
309-
problems.append(NoProblem(builder))
310-
return problems
315+
yield builder
311316

312317
@cached_property
313318
def featured_problem(self):
314319
try:
315320
return self.problems[0]
316321
except IndexError:
317-
return NoProblem()
322+
if self.builders:
323+
return NoProblem()
324+
else:
325+
return NoBuilds()
318326

319327
def get_grouped_problems(self):
320328
def key(problem):
@@ -527,8 +535,9 @@ class Change(DashboardObject):
527535
class Severity(enum.IntEnum):
528536
# "Headings" and concrete values are all sortable enum items
529537

538+
NO_INFO = enum.auto()
539+
530540
NO_PROBLEM = enum.auto()
531-
no_builds_yet = enum.auto()
532541
disconnected_unstable_builder = enum.auto()
533542
unstable_warnings = enum.auto()
534543
unstable_builder_failure = enum.auto()
@@ -546,6 +555,8 @@ class Severity(enum.IntEnum):
546555

547556
@cached_property
548557
def css_color_class(self):
558+
if self == Severity.NO_INFO:
559+
return 'none'
549560
if self >= Severity.BLOCKING:
550561
return 'danger'
551562
if self >= Severity.CONCERNING:
@@ -554,6 +565,8 @@ def css_color_class(self):
554565

555566
@cached_property
556567
def symbol(self):
568+
if self == Severity.NO_INFO:
569+
return ''
557570
if self >= Severity.BLOCKING:
558571
return '\N{HEAVY BALLOT X}'
559572
if self >= Severity.CONCERNING:
@@ -562,6 +575,8 @@ def symbol(self):
562575

563576
@cached_property
564577
def releasability(self):
578+
if self == Severity.NO_INFO:
579+
return 'N/A'
565580
if self >= Severity.BLOCKING:
566581
return 'Unreleasable'
567582
if self >= Severity.CONCERNING:
@@ -650,15 +665,6 @@ def affected_builds(self):
650665
return {"Warning build": self.build}
651666

652667

653-
@dataclass
654-
class NoBuilds(Problem):
655-
"""Builder has no finished builds yet"""
656-
builder: Builder
657-
658-
description = "Builder has no builds"
659-
severity = Severity.no_builds_yet
660-
661-
662668
@dataclass
663669
class BuilderDisconnected(Problem):
664670
"""Builder has no finished builds yet"""
@@ -696,6 +702,17 @@ class NoProblem(Problem):
696702
severity = Severity.NO_PROBLEM
697703

698704

705+
@dataclass
706+
class NoBuilds(Problem):
707+
"""Dummy problem"""
708+
builder: None = None
709+
710+
name = "Not built"
711+
712+
description = "No builds"
713+
severity = Severity.NO_INFO
714+
715+
699716
class ReleaseDashboard:
700717
# This doesn't get recreated for every render.
701718
# The Flask app and caches go here.

master/custom/static/dashboard.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
.release_status {
2+
--none-color: #888;
3+
24
background-color: white;
35
border-radius: 10px;
46
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
@@ -107,6 +109,9 @@
107109
.panel-danger & {
108110
background-color: var(--danger-color);
109111
}
112+
.panel-none & {
113+
background-color: var(--none-color);
114+
}
110115
}
111116

112117
.panel-body {
@@ -163,6 +168,7 @@
163168
&.status-success { --status-color: var(--success-color); }
164169
&.status-warning { --status-color: var(--warning-color); }
165170
&.status-danger { --status-color: var(--danger-color); }
171+
&.status-none { --status-color: var(--none-color); }
166172
.build-dots {
167173
white-space: nowrap;
168174
overflow: hidden;

master/custom/templates/releasedashboard.html

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,14 @@ <h3 class="panel-title">
143143
{{ branch.featured_problem }}
144144
</div>
145145
<div class="panel-footer">
146-
<div>
147-
{{ branch.status | title }} branch
148-
<code>{{ branch.branch }}</code>
149-
</div>
146+
{% if branch.branch %}
147+
<div>
148+
{{ branch.status | title }} branch
149+
<code>{{ branch.branch }}</code>
150+
</div>
151+
{% else %}
152+
<div>No branch</div>
153+
{% endif %}
150154
{% if branch.pep is defined %}
151155
<div>
152156
Schedule:
@@ -184,7 +188,7 @@ <h3>
184188
<section>
185189
{% for problem in problems %}
186190
<section>
187-
{% if problem.builder is defined %}
191+
{% if problem.builder %}
188192
{% set builder = problem.builder %}
189193
<h5>
190194
<a href="#/builders/{{builder.builderid}}">

0 commit comments

Comments
 (0)