]> git.ipfire.org Git - pbs.git/commitdiff
Redesign jobs and buildroot page.
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 3 Dec 2012 15:02:46 +0000 (16:02 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 3 Dec 2012 15:02:46 +0000 (16:02 +0100)
data/templates/jobs-buildroot.html
data/templates/jobs-detail.html
data/templates/modules/log-files-table.html
data/templates/modules/packages-table.html
web/handlers_jobs.py

index 3e8257c37ca6b00ebb05974b34045d8b251fb125..1187aa98db5a3e44cca089ac100df1c20986e579 100644 (file)
@@ -3,24 +3,92 @@
 {% block title %}{{ _("Job buildroot")}}: {{ job.name }}{% end block %}
 
 {% block body %}
-       <h1>{{ _("Job buildroot")}}: {{ job.name }}</h1>
-       <p>
-               {{ _("This is the buildroot of build job %s.") % job.name }}
-       </p>
-       <p>
-               {{ _("The packages listed below were used for the build.") }}
-       </p>
-
-       <ul class="buildroot">
-               {% for name, uuid, pkg in buildroot %}
-                       <li class="package">
-                               {% if pkg %}
-                                       <a href="/package/{{ pkg.uuid }}">{{ pkg.friendly_name }}</a>
-                               {% else %}
-                                       {{ name }} (<span>{{ uuid }}</span>)
-                               {% end %}
-                       </li>
-               {% end %}
+       <ul class="breadcrumb">
+               <li>
+                       <a href="/">{{ _("Home") }}</a>
+                       <span class="divider">/</span>
+               </li>
+               <li>
+                       <a href="/packages">{{ _("Packages") }}</a>
+                       <span class="divider">/</span>
+               </li>
+               <li>
+                       <a href="/package/{{ build.pkg.name }}">{{ build.pkg.name }}</a>
+                       <span class="divider">/</span>
+               </li>
+               <li>
+                       <a href="/build/{{ build.uuid }}">{{ build.name }}</a>
+                       <span class="divider">/</span>
+               </li>
+               <li>
+                       <a href="/job/{{ job.uuid }}">{{ job.arch.name }}</a>
+                       <span class="divider">/</span>
+               </li>
+               <li class="active">
+                       <a href="/job/{{ job.uuid }}/buildroot">{{ _("Buildroot") }}</a>
+               </li>
        </ul>
 
+       <div class="page-header">
+               <h2>
+                       {{ _("Build job")}}: {{ job.name }} <small>{{ _("Buildroot") }}</small>
+               </h2>
+       </div>
+
+       <div class="row">
+               <div class="span9">
+                       <p>
+                               {{ _("The packages listed below were used to build %s.") % job.name }}
+                       </p>
+               </div>
+
+               <div class="span3">
+                       <table class="table table-striped table-hover">
+                               <tr>
+                                       <td>{{ _("Packages") }}</td>
+                                       <td>{{ len(buildroot) }}</td>
+                               </tr>
+                               <tr>
+                                       <td>{{ _("Buildroot size") }}</td>
+                                       <td>{{ format_size(buildroot_size) }}</td>
+                               </tr>
+                               <tr>
+                                       <td>{{ _("Download size") }}</td>
+                                       <td>{{ format_size(download_size) }}</td>
+                               </tr>
+                       </table>
+               </div>
+       </div>
+
+       <hr>
+
+       <table class="table table-striped table-hover">
+               <tbody>
+                       {% for name, uuid, pkg in buildroot %}
+                               <tr>
+                                       {% if pkg %}
+                                               <td>
+                                                       <a href="/package/{{ pkg.uuid }}">{{ pkg.friendly_name }}</a>
+                                               </td>
+                                               <td>
+                                                       {{ pkg.summary }}
+                                               </td>
+                                               <td>
+                                                       {{ format_size(pkg.filesize) }}
+                                               </td>
+                                       {% else %}
+                                               <td>
+                                                       {{ name }}
+                                               </td>
+                                               <td>
+                                                       ({{ uuid }})
+                                               </td>
+                                               <td>
+                                                       {{ _("N/A") }}
+                                               </td>
+                                       {% end %}
+                               </tr>
+                       {% end %}
+               </tbody>
+       </table>
 {% end block %}
index 076cf755ec080e929b19f92cb96c7d408a79a04c..caa844349fa6b6c6cef904d4c7296031fccb3442 100644 (file)
                </li>
        </ul>
 
+       <div class="btn-group pull-right">
+               <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
+                       {{ _("Actions") }} <span class="caret"></span>
+               </a>
+               <ul class="dropdown-menu">
+                       {% if job.state in ("dispatching", "running", "uploading") %}
+                               <li>
+                                       <a href="/job/{{ job.uuid }}/abort">
+                                               {{ _("Abort job") }}
+                                       </a>
+                               </li>
+                       {% elif job.state in ("aborted", "failed") %}
+                               <li>
+                                       <a href="/job/{{ job.uuid }}/schedule?type=rebuild">
+                                               {{ _("Restart job") }}
+                                       </a>
+                               </li>
+                       {% elif job.state == "finished" %}
+                               <li>
+                                       <a href="/job/{{ job.uuid }}/schedule?type=test">
+                                               {{ _("Schedule test build") }}
+                                       </a>
+                               </li>
+                       {% end %}
+               </ul>
+       </div>
+
+
        <div class="page-header">
-               <h1>
-                       {{ _("Build job") }}: {{ job.name }}<br />
+               <h2>
+                       {{ _("Build job") }}: {{ job.name }}<br>
                        <small>{{ job.pkg.summary }}</small>
-               </h1>
+               </h2>
        </div>
 
        {% if job.message %}
        {% end %}
 
        <div class="row">
-               <div class="span12">    
-                       <ul class="nav nav-pills">
-                               <li class="active">
-                                       <a href="#detail" data-toggle="tab">{{ _("Job details") }}</a>
-                               </li>
-                               <li>
-                                       <a href="#time" data-toggle="tab">{{ _("Time") }}</a>
-                               </li>
-
-                               {% if job.logfiles %}
-                                       <li>
-                                               <a href="#logs" data-toggle="tab">
-                                                       {{ _("Log files") }} ({{ len(job.logfiles) }})
-                                               </a>
-                                       </li>
-                               {% end %}
-                       </ul>
-
-                       <div class="tab-content">
-                               <div class="tab-pane active" id="detail">
-                                       <div class="row">
-                                               <div class="span4">
-                                                       <table class="table table-striped table-hover">
-                                                               <tbody>
-                                                                       <tr>
-                                                                               <td>{{ _("State") }}</td>
-                                                                               <td>
-                                                                                       {{ job.state }}
-
-                                                                                       {% if job.state in ("dispatching", "running", "uploading") %}
-                                                                                               <a class="btn btn-mini btn-inverse pull-right" href="/job/{{ job.uuid }}/abort">
-                                                                                                       {{ _("Abort job") }}
-                                                                                               </a>
-                                                                                       {% elif job.state in ("aborted", "failed") %}
-                                                                                               <a class="btn btn-mini btn-success pull-right" href="/job/{{ job.uuid }}/schedule?type=rebuild">
-                                                                                                       {{ _("Restart") }}
-                                                                                               </a>
-                                                                                       {% elif job.state == "finished" %}
-                                                                                               <a class="btn btn-mini pull-right" href="/job/{{ job.uuid }}/schedule?type=test">
-                                                                                                       {{ _("Schedule test build") }}
-                                                                                               </a>
-                                                                                       {% end %}
-                                                                               </td>
-                                                                       </tr>
-                                                                       <tr>
-                                                                               <td>{{ _("Builder") }}</td>
-                                                                               <td>
-                                                                                       {% if job.builder %}
-                                                                                               <a href="/builder/{{ job.builder.name }}">{{ job.builder.name }}</a>
-                                                                                       {% else %}
-                                                                                               {{ _("No host assigned, yet.") }}
-                                                                                       {% end %}
-                                                                               </td>
-                                                                       </tr>
-
-                                                                       {% if job.has_buildroot() %}
-                                                                               <tr>
-                                                                                       <td>{{ _("Buildroot") }}</td>
-                                                                                       <td>
-                                                                                               <a href="/job/{{ job.uuid }}/buildroot?tries={{ job.tries }}">
-                                                                                                       {{ _("%s package", "%s packages", job.has_buildroot()) % job.has_buildroot() }}
-                                                                                               </a>
-                                                                                       </td>
-                                                                               </tr>
-                                                                       {% end %}
-                                                               </tbody>
-                                                       </table>
-                                               </div>
+               <div class="span7">
+                       <div class="well well-large well-white ac">
+                               <div class="row-fluid">
+                                       <div class="span5">
+                                               {% module JobState(job, cls="lead") %}
+
+                                               <hr>
+
+                                               <p>
+                                                       <span class="lead">{{ friendly_time(job.duration) }}</span>
+                                                       {% if job.builder %}
+                                                               <br>
+                                                               <a href="/builder/{{ job.builder.name }}">{{ job.builder.name }}</a>
+                                                       {% else %}
+                                                               <span class="muted">{{ _("No builder assigned.") }}</span>
+                                                       {% end %}
+                                               </p>
                                        </div>
-                               </div>
 
-                               <div class="tab-pane" id="time">
-                                       <div class="row">                               
-                                               <div class="span6">
-                                                       <table class="table">
-                                                               <tbody>
-                                                                       {% if job.duration %}
-                                                                               <tr>
-                                                                                       <td>{{ _("Duration") }}</td>
-                                                                                       <td>{{ friendly_time(job.duration) }}</td>
-                                                                               </tr>
-                                                                       {% end %}
-
-                                                                       <tr>
-                                                                               <td>{{ _("Job created") }}</td>
-                                                                               <td>{{ format_date(job.time_created, full_format=True) }}</td>
-                                                                       </tr>
-                                                                       <tr>
-                                                                               <td>{{ _("Job started") }}</td>
-                                                                               <td>
-                                                                                       {% if job.time_started %}
-                                                                                               {{ format_date(job.time_started, full_format=True) }}
-                                                                                       {% else %}
-                                                                                               {{ _("Not started, yet.") }}
-                                                                                       {% end %}
-                                                                               </td>
-                                                                       </tr>
-                                                                       <tr>
-                                                                               <td>{{ _("Job finished") }}</td>
-                                                                               <td>
-                                                                                       {% if job.time_finished %}
-                                                                                               {{ format_date(job.time_finished, full_format=True) }}
-                                                                                       {% else %}
-                                                                                               {{ _("Not finished, yet.") }}
-                                                                                       {% end %}
-                                                                               </td>
-                                                                       </tr>
-                                                               </tbody>
-                                                       </table>
-                                               </div>
+                                       <div class="span7">
+                                                       <p>
+                                                               <strong>{{ _("Created") }}</strong><br>
+                                                               {{ format_date(job.time_created, full_format=True) }}
+                                                       </p>
+                                                       {% if job.time_started %}
+                                                               <p>
+                                                                       <strong>{{ _("Started") }}</strong><br>
+                                                                       {{ format_date(job.time_started, full_format=True) }}
+                                                               </p>
+                                                       {% end %}
+                                                       {% if job.time_finished %}
+                                                               <p>
+                                                                       <strong>{{ _("Finished") }}</strong><br>
+                                                                       {{ format_date(job.time_finished, full_format=True) }}
+                                                               </p>
+                                                       {% end %}
                                        </div>
                                </div>
-
-                               {% if job.logfiles %}
-                                       <div class="tab-pane" id="logs">
-                                               <div class="row">
-                                                       <div class="span12">
-                                                               {% module LogFilesTable(job, job.logfiles) %}
-                                                       </div>
-                                               </div>
-                                       </div>
-                               {% end %}
                        </div>
                </div>
+
+               <div class="span5">
+                       <h4>{{ _("Build logs") }}</h4>
+                       {% if job.logfiles %}
+                               {% module LogFilesTable(job, job.logfiles) %}
+                       {% else %}
+                               <p class="muted">{{ _("No logs available, yet.") }}</p>
+                       {% end %}
+
+                       {% if job.has_buildroot() %}
+                               <hr>
+                               <p class="ac">
+                                       <a href="/job/{{ job.uuid }}/buildroot?tries={{ job.tries }}">{{ _("Buildroot") }}</a>
+                                       ({{ _("%s package", "%s packages", job.has_buildroot()) % job.has_buildroot() }})
+                               </p>
+                       {% end %}
+               </div>
        </div>
 
        {% if job.packages %}
-               <div class="row">
-                       <div class="span12">
-                               <hr>
+               <hr>
 
-                               <h2>
-                                       {{ _("Package files") }}
-                                       <small>({{ len(job.packages) }})</small>
-                               </h2>
+               <h3>
+                       {{ _("Package files") }}
+                       <small>({{ len(job.packages) }})</small>
+               </h3>
 
-                               {% module PackagesTable(job, job.packages) %}
-                       </div>
-               </div>
+               {% module PackagesTable(job, job.packages) %}
        {% end %}
 
        {% if log %}
-               <div class="row">
-                       <div class="span12">
-                               <hr>
+               <hr>
 
-                               <h2>{{ _("Log") }}</h2>
-                               {% module Log(log) %}
-                       </div>
-               </div>
+               <h3>{{ _("Log") }}</h3>
+
+               {% module Log(log) %}
        {% end %}
 {% end block %}
index 518c815a0caf9946a624fa6f90aad7e3136fa012..02a1c37f1afd730f2b5b79fb15463fcf87fedd1b 100644 (file)
@@ -1,23 +1,11 @@
 <table class="table table-striped table-hover">
-       <thead>
-               <tr>
-                       <th>{{ _("Filename") }}</th>
-                       <th>{{ _("Size") }}</th>
-                       <th>&nbsp;</th>
-               </tr>
-       </thead>
-
        <tbody>
                {% for file in files %}
                        <tr>
-                               <td>{{ file.name }}</td>
-                               <td>{{ format_size(file.filesize) }}</td>
                                <td>
-                                       <a class="btn btn-mini" href="{{ file.download_url }}">
-                                               <i class="icon-download"></i>
-                                               {{ _("Download") }}
-                                       </a>
+                                       <a href="{{ file.download_url }}">{{ file.name }}</a>
                                </td>
+                               <td>{{ format_size(file.filesize) }}</td>
                        </tr>
                {% end %}
        </tbody>
index bb2f13f12b76a728f5c084f4c459c52737fbff39..67ab5d9bf7840fc7b665b86f49300666830acf6f 100644 (file)
@@ -2,8 +2,7 @@
        <thead>
                <tr>
                        <th>{{ _("Name") }}</th>
-                       <th>{{ _("Version") }}</th>
-                       <th>{{ _("Arch") }}</th>
+                       <th>{{ _("Summary") }}</th>
                        <th>{{ _("Size") }}</th>
                        <th>&nbsp;</th>
                </tr>
                {% for package in packages %}
                        <tr>
                                <td>
-                                       <a href="/package/{{ package.uuid }}">{{ package.name }}</a>
+                                       <a href="/package/{{ package.uuid }}">{{ package.friendly_name }}</a>
                                </td>
-                               <td>{{ package.friendly_version }}</td>
-                               <td>{{ package.arch.name }}</td>
+                               <td>{{ package.summary }}</td>
                                <td>{{ format_size(package.filesize) }}</td>
                                <td>
                                        <a class="btn btn-mini" href="{{ job.build.download_prefix }}/{{ package.path }}">
index 09dfe2edeadba2f6feb55ae10078a8435a9ce09f..ba2411bba57258f9586423f358f94504378675b6 100644 (file)
@@ -18,20 +18,28 @@ class JobDetailHandler(BaseHandler):
 
 
 class JobBuildrootHandler(BaseHandler):
-       def get_job(self, uuid):
+       def get(self, uuid):
                job = self.pakfire.jobs.get_by_uuid(uuid)
                if not job:
                        raise tornado.web.HTTPError(404, "Job not found: %s" % uuid)
 
-               return job
-
-       def get(self, uuid):
-               job = self.get_job(uuid)
-
                tries = self.get_argument("tries", None)
                buildroot = job.get_buildroot(tries)
 
-               self.render("jobs-buildroot.html", job=job, buildroot=buildroot)
+               # Calculate the download size and buildroot size.
+               download_size = 0
+               buildroot_size = 0
+
+               for name, uuid, pkg in buildroot:
+                       if not pkg:
+                               continue
+
+                       download_size += pkg.filesize
+                       buildroot_size += pkg.size
+
+               self.render("jobs-buildroot.html", job=job, build=job.build,
+                       buildroot=buildroot, download_size=download_size,
+                       buildroot_size=buildroot_size)
 
 
 class JobScheduleHandler(BaseHandler):