templates_buildsdir = $(templatesdir)/builds
+dist_templates_builds_modules_DATA = \
+ src/templates/builds/modules/list.html
+
+templates_builds_modulesdir = $(templates_buildsdir)/modules
+
dist_templates_errors_DATA = \
src/templates/errors/error.html \
src/templates/errors/error-400.html \
"""
return self.data.type
+ @property
+ def time_created(self):
+ return self.data.time_created
+
def get_owner(self):
"""
The owner of this build.
{% block title %}{{ _("Builds") }}{% end block %}
-{% block body %}
+{% block container %}
+ <nav aria-label="{{ _("You are here:") }}" role="navigation">
+ <ul class="breadcrumbs">
+ <li>
+ <a href="/">{{ _("Home") }}</a>
+ </li>
+ <li>
+ <span class="show-for-sr">{{ _("Current") }}: </span> {{ _("Builds") }}
+ </li>
+ </ul>
+ </nav>
- <div class="row">
- <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
- <nav aria-label="breadcrumb" role="navigation">
- <ol class="breadcrumb">
- <li class="breadcrumb-item"><a href="/">{{ _("Home") }}</a></li>
- <li class="breadcrumb-item active">
- <a href="/builds">{{ _("Builds") }}</a>
- </li>
- </ol>
- </nav>
- </div>
- </div>
-
- <div class="row">
- <div class="col-12 col-sm-12 col-md-9 col-lg-10 col-xl-10">
- <h2 style="word-wrap: break-word;">
- {{ _("Builds") }}
- </h2>
- </div>
- <div class="col-12 col-sm-12 col-md-3 col-lg-2 col-xl-2">
- <div class="dropdown">
- <button class="btn btn-block btn-light dropdown-toggle mb-2" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- {{ _("Actions") }}
- </button>
- <div class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownMenuButton">
- <a class="dropdown-item" href="/builds/comments">
- {{ _("Show Comments") }}
- </a>
- </div>
- </div>
- </div>
- </div>
-
- <div class="row">
- <div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12">
- {% module BuildTable(builds, show_user=True) %}
- </div>
- </div>
+ <h1>{{ _("Builds") }}</h1>
+ {# Render all builds #}
+ {% module BuildsList(builds) %}
{% end block %}
--- /dev/null
+{% for build in builds %}
+ {% set package = build.pkg %}
+
+ <div class="callout">
+ <h5>
+ <a href="/builds/{{ build.uuid }}">{{ build }}</a>
+
+ {% if package.summary %}
+ <small>{{ package.summary }}</small>
+ {% end %}
+ </h5>
+
+ {% if build.jobs %}
+ <p>
+ {% for job in build.jobs %}
+ <span class="label
+ {% if job.failed %}
+ danger
+ {% elif job.is_running() %}
+ primary
+ {% elif job.has_finished() %}
+ success
+ {% else %}
+ secondary
+ {% end %}">{{ job.arch }}</span>
+ {% end %}
+ </p>
+ {% end %}
+
+ <small>
+ {% if build.owner %}
+ {{ _("Created %(when)s by %(author)s") % {
+ "when" : locale.format_date(build.time_created, shorter=True),
+ "author" : build.owner,
+ } }}
+ {% else %}
+ {{ _("Created %s") % locale.format_date(build.time_created, shorter=True) }}
+ {% end %}
+ </small>
+
+ {# XXX show repository #}
+ </div>
+{% end %}
"LogEntryComment" : ui_modules.LogEntryCommentModule,
"BuildHeadline" : ui_modules.BuildHeadlineModule,
+ "BuildsList" : builds.ListModule,
"BuildStateWarnings" : ui_modules.BuildStateWarningsModule,
"BuildState" : ui_modules.BuildState,
import tornado.web
from . import base
-
+from . import ui_modules
class BuildBaseHandler(base.BaseHandler):
def get_build(self, uuid):
limit=25)
self.render("build-list.html", builds=builds)
+
+
+class ListModule(ui_modules.UIModule):
+ def render(self, builds):
+ return self.render_string("builds/modules/list.html", builds=builds)