]> git.ipfire.org Git - pbs.git/commitdiff
builds: Make the list cleaner
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 11 Feb 2025 18:06:57 +0000 (18:06 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 11 Feb 2025 18:06:57 +0000 (18:06 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/builds.py
src/templates/builds/macros.html

index d6cf373112c4dd386cd8d84a8c0222643a0da201..34fd82373db667d725c0b1e2180820e54a9351d8 100644 (file)
@@ -462,6 +462,19 @@ class Build(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        owner = sqlalchemy.orm.relationship("User", foreign_keys=[owner_id], lazy="joined")
 
+       # Is this a scratch build?
+
+       def is_scratch(self):
+               # We must have an owner
+               if self.owner is None:
+                       return False
+
+               # Test builds don't count as scratch builds
+               if self.is_test():
+                       return False
+
+               return True
+
        # Repo ID
 
        repo_id = Column(Integer, ForeignKey("repositories.id"), nullable=False)
index 4f15ac8ef2b63fc93b5a473e159229a08d205f2f..63120d5d2cc779cb4d3a3c380b4de8c57523e50e 100644 (file)
                                        {% endif %}
 
                                        <a class="panel-block is-block p-4" href="/builds/{{ build.uuid }}">
-                                               {% if build.jobs %}
-                                                       <div class="tags is-pulled-right is-hidden-mobile">
-                                                               {% for job in build.jobs | sort %}
-                                                                       {# Pending #}
-                                                                       {% if job.is_pending() %}
-                                                                               <span class="tag">
-                                                                                       <span class="icon-text">
-                                                                                               <span class="icon">
-                                                                                                       <i class="fa-solid fa-clock"></i>
+                                               <span class="level mb-0">
+                                                       <span class="level-left">
+                                                               <span class="level-item">
+                                                                       <strong>
+                                                                               {{ build }}
+                                                                       </strong>
+                                                               </span>
+                                                       </span>
+
+                                                       <span class="level-right">
+                                                               {# Scratch Build? #}
+                                                               {% if build.is_scratch() %}
+                                                                       <span class="level-item">
+                                                                               <figure class="image is-24x24">
+                                                                                       {{ Avatar(build.owner, size=48) }}
+                                                                               </figure>
+                                                                       </span>
+                                                               {% endif %}
+
+                                                               <span class="level-item">
+                                                                       <span class="tags">
+                                                                               {% for job in build.jobs | sort %}
+                                                                                       {# Pending #}
+                                                                                       {% if job.is_pending() %}
+                                                                                               <span class="tag">
+                                                                                                       <span class="icon-text">
+                                                                                                               <span class="icon">
+                                                                                                                       <i class="fa-solid fa-clock"></i>
+                                                                                                               </span>
+
+                                                                                                               <span>{{ job.arch }}</span>
+                                                                                                       </span>
                                                                                                </span>
 
-                                                                                               <span>{{ job.arch }}</span>
-                                                                                       </span>
-                                                                               </span>
+                                                                                       {# Running #}
+                                                                                       {% elif job.is_running() %}
+                                                                                               <span class="tag">
+                                                                                                       <span class="icon-text">
+                                                                                                               <span class="icon">
+                                                                                                                       <i class="fa-solid fa-gear fa-spin"></i>
+                                                                                                               </span>
 
-                                                                       {# Running #}
-                                                                       {% elif job.is_running() %}
-                                                                               <span class="tag">
-                                                                                       <span class="icon-text">
-                                                                                               <span class="icon">
-                                                                                                       <i class="fa-solid fa-gear fa-spin"></i>
+                                                                                                               <span>{{ job.arch }}</span>
+                                                                                                       </span>
                                                                                                </span>
 
-                                                                                               <span>{{ job.arch }}</span>
-                                                                                       </span>
-                                                                               </span>
+                                                                                       {# Failed #}
+                                                                                       {% elif job.has_failed() %}
+                                                                                               <span class="tag is-danger">
+                                                                                                       <span class="icon-text">
+                                                                                                               <span class="icon">
+                                                                                                                       <i class="fa-solid fa-bug"></i>
+                                                                                                               </span>
 
-                                                                       {# Failed #}
-                                                                       {% elif job.has_failed() %}
-                                                                               <span class="tag is-danger">
-                                                                                       <span class="icon-text">
-                                                                                               <span class="icon">
-                                                                                                       <i class="fa-solid fa-bug"></i>
+                                                                                                               <span>{{ job.arch }}</span>
+                                                                                                       </span>
                                                                                                </span>
 
-                                                                                               <span>{{ job.arch }}</span>
-                                                                                       </span>
-                                                                               </span>
+                                                                                       {# Aborted #}
+                                                                                       {% elif job.is_aborted() %}
+                                                                                               <span class="tag is-dark">
+                                                                                                       <span class="icon-text">
+                                                                                                               <span class="icon">
+                                                                                                                       <i class="fa-solid fa-xmark"></i>
+                                                                                                               </span>
 
-                                                                       {# Aborted #}
-                                                                       {% elif job.is_aborted() %}
-                                                                               <span class="tag is-dark">
-                                                                                       <span class="icon-text">
-                                                                                               <span class="icon">
-                                                                                                       <i class="fa-solid fa-xmark"></i>
+                                                                                                               <span>{{ job.arch }}</span>
+                                                                                                       </span>
                                                                                                </span>
 
-                                                                                               <span>{{ job.arch }}</span>
-                                                                                       </span>
-                                                                               </span>
+                                                                                       {# Finished #}
+                                                                                       {% elif job.has_finished() %}
+                                                                                               <span class="tag is-success">
+                                                                                                       <span class="icon-text">
+                                                                                                               <span class="icon">
+                                                                                                                       <i class="fa-solid fa-check"></i>
+                                                                                                               </span>
 
-                                                                       {# Finished #}
-                                                                       {% elif job.has_finished() %}
-                                                                               <span class="tag is-success">
-                                                                                       <span class="icon-text">
-                                                                                               <span class="icon">
-                                                                                                       <i class="fa-solid fa-check"></i>
+                                                                                                               <span>{{ job.arch }}</span>
+                                                                                                       </span>
                                                                                                </span>
 
-                                                                                               <span>{{ job.arch }}</span>
-                                                                                       </span>
-                                                                               </span>
-
-                                                                       {# Unknown State #}
-                                                                       {% else %}
-                                                                               <span class="tag is-light">
-                                                                                       {{ _("Unknown State") }} - {{ job.arch }}
-                                                                               </span>
-                                                                       {% endif %}
-                                                               {% endfor %}
-                                                       </div>
-                                               {% endif %}
-
-                                               <strong>
-                                                       {{ build }}
-                                               </strong>
-
-                                               {% if not shorter %}
-                                                       <p>
-                                                               <small>
-                                                                       {% if build.owner %}
-                                                                               {{ _("Created %(when)s by %(owner)s") % {
-                                                                                       "when"  : locale.format_date(build.created_at, shorter=True),
-                                                                                       "owner" : build.owner,
-                                                                               } }}
-                                                                       {% else %}
-                                                                               {{ _("Created %s") % locale.format_date(build.created_at, shorter=True) }}
-                                                                       {% endif %}
-                                                               </small>
-                                                       </p>
-                                               {% endif %}
+                                                                                       {# Unknown State #}
+                                                                                       {% else %}
+                                                                                               <span class="tag is-light">
+                                                                                                       {{ _("Unknown State") }} - {{ job.arch }}
+                                                                                               </span>
+                                                                                       {% endif %}
+                                                                               {% endfor %}
+                                                                       </span>
+                                                               </span>
+                                                       </span>
+                                               </span>
                                        </a>
                                {% endfor %}