diff options
| author | Alexandru DAMIAN <alexandru.damian@intel.com> | 2015-06-17 17:30:34 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-06-26 09:27:32 +0100 |
| commit | 70c4eb8d3acaad267ee943ebfba793f9cc1c5ee6 (patch) | |
| tree | 416f9dcf9c16014e1fc2b975a1de01b286847e25 /bitbake/lib/toaster/toastergui | |
| parent | 287b49a35b3f06b302ee199ed4b2d123f1aae58c (diff) | |
| download | poky-70c4eb8d3acaad267ee943ebfba793f9cc1c5ee6.tar.gz | |
bitbake: toaster: refactor build model
We remove the "timespent", "errors_no" and "warnings_no" fields
in favor of computing the needed values at runtime. This prevents
inconsistencies in the UI.
Also removeing all references to BuildRequests from the interface -
all build details now display in the build dashboard.
Minor fixes related to data logging.
(Bitbake rev: 44f37394ed3e4ca02f940be172fe4395b0ee0f7d)
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/toaster/toastergui')
17 files changed, 79 insertions, 176 deletions
diff --git a/bitbake/lib/toaster/toastergui/templates/builddashboard.html b/bitbake/lib/toaster/toastergui/templates/builddashboard.html index 47b8d7aa1f..bab8e388f5 100644 --- a/bitbake/lib/toaster/toastergui/templates/builddashboard.html +++ b/bitbake/lib/toaster/toastergui/templates/builddashboard.html | |||
| @@ -23,22 +23,23 @@ | |||
| 23 | </strong> on | 23 | </strong> on |
| 24 | {{build.completed_on|date:"d/m/y H:i"}} | 24 | {{build.completed_on|date:"d/m/y H:i"}} |
| 25 | </span> | 25 | </span> |
| 26 | {% if build.warnings_no or build.errors_no %} | 26 | {% if build.warnings.count or build.errors.count %} |
| 27 | with | 27 | with |
| 28 | {% endif %} | 28 | {% endif %} |
| 29 | {%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %} | 29 | {%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %} |
| 30 | {% if build.errors_no %} | 30 | {% if build.errors.count %} |
| 31 | <span > <i class="icon-minus-sign red"></i><strong><a href="#errors" class="error show-errors"> {{build.errors_no}} error{{build.errors_no|pluralize}}</a></strong></span> | 31 | <span > <i class="icon-minus-sign red"></i><strong><a href="#errors" class="error show-errors"> {{build.errors.count}} error{{build.errors.count|pluralize}}</a></strong></span> |
| 32 | {% endif %} | 32 | {% endif %} |
| 33 | {% if build.warnings_no %} | 33 | {% if build.warnings.count %} |
| 34 | {% if build.errors_no %} | 34 | {% if build.errors.count %} |
| 35 | and | 35 | and |
| 36 | {% endif %} | 36 | {% endif %} |
| 37 | <span > <i class="icon-warning-sign yellow"></i><strong><a href="#warnings" class="warning show-warnings"> {{build.warnings_no}} warning{{build.warnings_no|pluralize}}</a></strong></span> | 37 | <span > <i class="icon-warning-sign yellow"></i><strong><a href="#warnings" class="warning show-warnings"> {{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a></strong></span> |
| 38 | {% endif %} | 38 | {% endif %} |
| 39 | <span class="pull-right">Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent|sectohms }}</a> | 39 | <span class="pull-right">Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent_seconds|sectohms }}</a> |
| 40 | <a class="btn {%if build.outcome == build.SUCCEEDED%}btn-success{%else%}btn-danger{%endif%} pull-right log" href="{% url 'build_artifact' build.id "cookerlog" build.id %}">Download build log</a> | 40 | <a class="btn {%if build.outcome == build.SUCCEEDED%}btn-success{%else%}btn-danger{%endif%} pull-right log" href="{% url 'build_artifact' build.id "cookerlog" build.id %}">Download build log</a> |
| 41 | </span> | 41 | </span> |
| 42 | |||
| 42 | {%endif%} | 43 | {%endif%} |
| 43 | </div> | 44 | </div> |
| 44 | {% if build.toaster_exceptions.count > 0 %} | 45 | {% if build.toaster_exceptions.count > 0 %} |
| @@ -52,14 +53,14 @@ | |||
| 52 | </div> | 53 | </div> |
| 53 | </div> | 54 | </div> |
| 54 | 55 | ||
| 55 | {% if build.errors_no %} | 56 | {% if build.errors.count %} |
| 56 | <div class="accordion span10 pull-right" id="errors"> | 57 | <div class="accordion span10 pull-right" id="errors"> |
| 57 | <div class="accordion-group"> | 58 | <div class="accordion-group"> |
| 58 | <div class="accordion-heading"> | 59 | <div class="accordion-heading"> |
| 59 | <a class="accordion-toggle error toggle-errors"> | 60 | <a class="accordion-toggle error toggle-errors"> |
| 60 | <h2 id="error-toggle"> | 61 | <h2 id="error-toggle"> |
| 61 | <i class="icon-minus-sign"></i> | 62 | <i class="icon-minus-sign"></i> |
| 62 | {{build.errors_no}} error{{build.errors_no|pluralize}} | 63 | {{build.errors.count}} error{{build.errors.count|pluralize}} |
| 63 | </h2> | 64 | </h2> |
| 64 | </a> | 65 | </a> |
| 65 | </div> | 66 | </div> |
| @@ -241,14 +242,14 @@ | |||
| 241 | </div> | 242 | </div> |
| 242 | </div> | 243 | </div> |
| 243 | 244 | ||
| 244 | {% if build.warnings_no %} | 245 | {% if build.warnings.count %} |
| 245 | <div class="accordion span10 pull-right" id="warnings"> | 246 | <div class="accordion span10 pull-right" id="warnings"> |
| 246 | <div class="accordion-group"> | 247 | <div class="accordion-group"> |
| 247 | <div class="accordion-heading"> | 248 | <div class="accordion-heading"> |
| 248 | <a class="accordion-toggle warning toggle-warnings"> | 249 | <a class="accordion-toggle warning toggle-warnings"> |
| 249 | <h2 id="warning-toggle"> | 250 | <h2 id="warning-toggle"> |
| 250 | <i class="icon-warning-sign"></i> | 251 | <i class="icon-warning-sign"></i> |
| 251 | {{build.warnings_no}} warning{{build.warnings_no|pluralize}} | 252 | {{build.warnings.count}} warning{{build.warnings.count|pluralize}} |
| 252 | </h2> | 253 | </h2> |
| 253 | </a> | 254 | </a> |
| 254 | </div> | 255 | </div> |
diff --git a/bitbake/lib/toaster/toastergui/templates/builds.html b/bitbake/lib/toaster/toastergui/templates/builds.html index e9211affcd..00d1d4edd1 100644 --- a/bitbake/lib/toaster/toastergui/templates/builds.html +++ b/bitbake/lib/toaster/toastergui/templates/builds.html | |||
| @@ -46,7 +46,11 @@ | |||
| 46 | <div class="row-fluid"> | 46 | <div class="row-fluid"> |
| 47 | <div class="alert"> | 47 | <div class="alert"> |
| 48 | <form class="no-results input-append" id="searchform"> | 48 | <form class="no-results input-append" id="searchform"> |
| 49 | <input id="search" name="search" class="input-xxlarge" type="text" value="{{request.GET.search}}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{% endif %} | 49 | <input id="search" name="search" class="input-xxlarge" type="text" value=" |
| 50 | {% if request.GET.search %} | ||
| 51 | {{request.GET.search}} | ||
| 52 | {% endif %}"/> | ||
| 53 | {% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{% endif %} | ||
| 50 | <button class="btn" type="submit" value="Search">Search</button> | 54 | <button class="btn" type="submit" value="Search">Search</button> |
| 51 | <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all builds</button> | 55 | <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all builds</button> |
| 52 | </form> | 56 | </form> |
| @@ -60,8 +64,8 @@ | |||
| 60 | {% for build in objects %} | 64 | {% for build in objects %} |
| 61 | <tr class="data"> | 65 | <tr class="data"> |
| 62 | <td class="outcome"> | 66 | <td class="outcome"> |
| 63 | <a href="{% url "builddashboard" build.id %}">{%if build.outcome == build.SUCCEEDED%}<i class="icon-ok-sign success"></i>{%elif build.outcome == build.FAILED%}<i class="icon-minus-sign error"></i>{%else%}{%endif%}</a> | 67 | <a href="{% url "builddashboard" build.id %}">{%if build.outcome == build.SUCCEEDED%}<i class="icon-ok-sign success"></i>{%elif build.outcome == build.FAILED%}<i class="icon-minus-sign error"></i>{%else%}{%endif%}</a> |
| 64 | </td> | 68 | </td> |
| 65 | <td class="target">{% for t in build.target_set.all %} <a href="{% url "builddashboard" build.id %}"> {{t.target}} </a> <br />{% endfor %}</td> | 69 | <td class="target">{% for t in build.target_set.all %} <a href="{% url "builddashboard" build.id %}"> {{t.target}} </a> <br />{% endfor %}</td> |
| 66 | <td class="machine"><a href="{% url "builddashboard" build.id %}">{{build.machine}}</a></td> | 70 | <td class="machine"><a href="{% url "builddashboard" build.id %}">{{build.machine}}</a></td> |
| 67 | <td class="started_on"><a href="{% url "builddashboard" build.id %}">{{build.started_on|date:"d/m/y H:i"}}</a></td> | 71 | <td class="started_on"><a href="{% url "builddashboard" build.id %}">{{build.started_on|date:"d/m/y H:i"}}</a></td> |
| @@ -77,19 +81,19 @@ | |||
| 77 | <a href="{% url "tasks" build.id %}?filter=outcome%3A4">{{exectask.count}} task{{exectask.count|pluralize}}</a> | 81 | <a href="{% url "tasks" build.id %}?filter=outcome%3A4">{{exectask.count}} task{{exectask.count|pluralize}}</a> |
| 78 | {%endif%} | 82 | {%endif%} |
| 79 | </td> | 83 | </td> |
| 80 | <td class="errors_no"> | 84 | <td class="errors.count"> |
| 81 | {% if build.errors_no %} | 85 | {% if build.errors.count %} |
| 82 | <a class="errors_no error" href="{% url "builddashboard" build.id %}#errors">{{build.errors_no}} error{{build.errors_no|pluralize}}</a> | 86 | <a class="errors.count error" href="{% url "builddashboard" build.id %}#errors">{{build.errors.count}} error{{build.errors.count|pluralize}}</a> |
| 83 | {%endif%} | 87 | {%endif%} |
| 84 | </td> | 88 | </td> |
| 85 | <td class="warnings_no">{% if build.warnings_no %}<a class="warnings_no warning" href="{% url "builddashboard" build.id %}#warnings">{{build.warnings_no}} warning{{build.warnings_no|pluralize}}</a>{%endif%}</td> | 89 | <td class="warnings.count">{% if build.warnings.count %}<a class="warnings.count warning" href="{% url "builddashboard" build.id %}#warnings">{{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a>{%endif%}</td> |
| 86 | <td class="time"><a href="{% url "buildtime" build.id %}">{{build.timespent|sectohms}}</a></td> | 90 | <td class="time"><a href="{% url "buildtime" build.id %}">{{build.timespent_seconds|sectohms}}</a></td> |
| 87 | <td class="output"> | 91 | <td class="output"> |
| 88 | {% if build.outcome == build.SUCCEEDED %} | 92 | {% if build.outcome == build.SUCCEEDED %} |
| 89 | <a href="{%url "builddashboard" build.id%}#images">{{fstypes|get_dict_value:build.id}}</a> | 93 | <a href="{%url "builddashboard" build.id%}#images">{{fstypes|get_dict_value:build.id}}</a> |
| 90 | {% endif %} | 94 | {% endif %} |
| 91 | </td> | 95 | </td> |
| 92 | <td> | 96 | <td> |
| 93 | <a href="{% url 'project' build.project.id %}">{{build.project.name}}</a> | 97 | <a href="{% url 'project' build.project.id %}">{{build.project.name}}</a> |
| 94 | </td> | 98 | </td> |
| 95 | </tr> | 99 | </tr> |
diff --git a/bitbake/lib/toaster/toastergui/templates/configuration.html b/bitbake/lib/toaster/toastergui/templates/configuration.html index 2aa1ae1a49..3e489918d2 100644 --- a/bitbake/lib/toaster/toastergui/templates/configuration.html +++ b/bitbake/lib/toaster/toastergui/templates/configuration.html | |||
| @@ -50,9 +50,6 @@ | |||
| 50 | <th>Layer</th> | 50 | <th>Layer</th> |
| 51 | <th>Layer branch</th> | 51 | <th>Layer branch</th> |
| 52 | <th>Layer commit</th> | 52 | <th>Layer commit</th> |
| 53 | {% if not MANAGED or not build.project %} | ||
| 54 | <th>Layer directory</th> | ||
| 55 | {% endif %} | ||
| 56 | </tr> | 53 | </tr> |
| 57 | </thead> | 54 | </thead> |
| 58 | <tbody>{% for lv in build.layer_version_build.all|dictsort:"layer.name" %} | 55 | <tbody>{% for lv in build.layer_version_build.all|dictsort:"layer.name" %} |
| @@ -63,9 +60,6 @@ | |||
| 63 | <li>{{lv.commit}}</li> </ul>"> | 60 | <li>{{lv.commit}}</li> </ul>"> |
| 64 | {{lv.commit|truncatechars:13}} | 61 | {{lv.commit|truncatechars:13}} |
| 65 | </a></td> | 62 | </a></td> |
| 66 | {% if not MANAGED or not build.project %} | ||
| 67 | <td>{{lv.local_path}}</td> | ||
| 68 | {% endif %} | ||
| 69 | </tr>{% endfor %} | 63 | </tr>{% endfor %} |
| 70 | </tbody> | 64 | </tbody> |
| 71 | </table> | 65 | </table> |
diff --git a/bitbake/lib/toaster/toastergui/templates/filtersnippet.html b/bitbake/lib/toaster/toastergui/templates/filtersnippet.html index 56e2b21cc0..1101aa8100 100644 --- a/bitbake/lib/toaster/toastergui/templates/filtersnippet.html +++ b/bitbake/lib/toaster/toastergui/templates/filtersnippet.html | |||
| @@ -40,8 +40,10 @@ | |||
| 40 | {% endif %} | 40 | {% endif %} |
| 41 | {% endfor %} | 41 | {% endfor %} |
| 42 | <!-- daterange persistence --> | 42 | <!-- daterange persistence --> |
| 43 | {% if last_date_from and last_date_to %} | ||
| 43 | <input type="hidden" id="last_date_from_{{key}}" name="last_date_from" value="{{last_date_from}}"/> | 44 | <input type="hidden" id="last_date_from_{{key}}" name="last_date_from" value="{{last_date_from}}"/> |
| 44 | <input type="hidden" id="last_date_to_{{key}}" name="last_date_to" value="{{last_date_to}}"/> | 45 | <input type="hidden" id="last_date_to_{{key}}" name="last_date_to" value="{{last_date_to}}"/> |
| 46 | {% endif %} | ||
| 45 | </div> | 47 | </div> |
| 46 | <div class="modal-footer"> | 48 | <div class="modal-footer"> |
| 47 | <button type="submit" class="btn btn-primary" data-key="{{key}}">Apply</button> | 49 | <button type="submit" class="btn btn-primary" data-key="{{key}}">Apply</button> |
diff --git a/bitbake/lib/toaster/toastergui/templates/landing.html b/bitbake/lib/toaster/toastergui/templates/landing.html index 4af849c2b3..15cac47b39 100644 --- a/bitbake/lib/toaster/toastergui/templates/landing.html +++ b/bitbake/lib/toaster/toastergui/templates/landing.html | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | <div class="container-fluid"> | 9 | <div class="container-fluid"> |
| 10 | <div class="row-fluid"> | 10 | <div class="row-fluid"> |
| 11 | <!-- Empty - no data in database --> | 11 | <!-- Empty - no data in database --> |
| 12 | <div class="hero-unit span12 {%if MANAGED%}well-transparent{%endif%}"> | 12 | <div class="hero-unit span12 well-transparent"> |
| 13 | <div class="row-fluid"> | 13 | <div class="row-fluid"> |
| 14 | <div class="span6"> | 14 | <div class="span6"> |
| 15 | <h1> | 15 | <h1> |
| @@ -17,7 +17,6 @@ | |||
| 17 | </h1> | 17 | </h1> |
| 18 | <p>A web interface to <a href="http://www.openembedded.org">OpenEmbedded</a> and <a href="http://www.yoctoproject.org/tools-resources/projects/bitbake">BitBake</a>, the <a href="http://www.yoctoproject.org">Yocto Project</a> build system.</p> | 18 | <p>A web interface to <a href="http://www.openembedded.org">OpenEmbedded</a> and <a href="http://www.yoctoproject.org/tools-resources/projects/bitbake">BitBake</a>, the <a href="http://www.yoctoproject.org">Yocto Project</a> build system.</p> |
| 19 | 19 | ||
| 20 | {% if MANAGED %} | ||
| 21 | 20 | ||
| 22 | {% if lvs_nos %} | 21 | {% if lvs_nos %} |
| 23 | <p class="hero-actions"> | 22 | <p class="hero-actions"> |
| @@ -37,7 +36,7 @@ | |||
| 37 | </li> | 36 | </li> |
| 38 | </ul> | 37 | </ul> |
| 39 | </div> | 38 | </div> |
| 40 | {% endif %} | 39 | {% endif %} |
| 41 | 40 | ||
| 42 | <ul class="unstyled"> | 41 | <ul class="unstyled"> |
| 43 | <li> | 42 | <li> |
| @@ -48,18 +47,6 @@ | |||
| 48 | </li> | 47 | </li> |
| 49 | </ul> | 48 | </ul> |
| 50 | 49 | ||
| 51 | {% else %} | ||
| 52 | |||
| 53 | <p class="hero-actions"> | ||
| 54 | <a class="btn btn-primary btn-large" href="http://www.yoctoproject.org/docs/latest/toaster-manual/toaster-manual.html"> | ||
| 55 | Show me the manual | ||
| 56 | </a> | ||
| 57 | <a class="btn btn-large" href="https://wiki.yoctoproject.org/wiki/Contribute_to_Toaster"> | ||
| 58 | I want to contribute | ||
| 59 | </a> | ||
| 60 | </p> | ||
| 61 | |||
| 62 | {% endif %} | ||
| 63 | </div> | 50 | </div> |
| 64 | <div class="span6"> | 51 | <div class="span6"> |
| 65 | {% if MANAGED %} | 52 | {% if MANAGED %} |
| @@ -70,26 +57,6 @@ | |||
| 70 | </div> | 57 | </div> |
| 71 | </div> | 58 | </div> |
| 72 | </div> | 59 | </div> |
| 73 | |||
| 74 | {% if not MANAGED %} | ||
| 75 | <!-- Empty - no data in database --> | ||
| 76 | <div class="page-header top-air"> | ||
| 77 | <h1> | ||
| 78 | All builds | ||
| 79 | </h1> | ||
| 80 | </div> | ||
| 81 | <div class="alert alert-info lead"> | ||
| 82 | Toaster has not recorded any builds yet. Go build something with | ||
| 83 | <a href="http://www.yoctoproject.org/docs/current/yocto-project-qs/yocto-project-qs.html#test-run"> | ||
| 84 | Knotty | ||
| 85 | </a> | ||
| 86 | or | ||
| 87 | <a href="https://www.yoctoproject.org/documentation/hob-manual"> | ||
| 88 | Hob | ||
| 89 | </a> | ||
| 90 | </div> | ||
| 91 | {% endif %} | ||
| 92 | |||
| 93 | </div> | 60 | </div> |
| 94 | 61 | ||
| 95 | {% endblock %} | 62 | {% endblock %} |
diff --git a/bitbake/lib/toaster/toastergui/templates/mrb_section.html b/bitbake/lib/toaster/toastergui/templates/mrb_section.html index 7e84e4134d..d37b694f3d 100644 --- a/bitbake/lib/toaster/toastergui/templates/mrb_section.html +++ b/bitbake/lib/toaster/toastergui/templates/mrb_section.html | |||
| @@ -43,19 +43,35 @@ | |||
| 43 | </div> | 43 | </div> |
| 44 | {%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %} | 44 | {%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %} |
| 45 | <div class="span2 lead"> | 45 | <div class="span2 lead"> |
| 46 | {% if build.errors_no %} | 46 | {% if build.errors.count %} |
| 47 | <i class="icon-minus-sign red"></i> <a href="{%url 'builddashboard' build.pk%}#errors" class="error">{{build.errors_no}} error{{build.errors_no|pluralize}}</a> | 47 | <i class="icon-minus-sign red"></i> <a href="{%url 'builddashboard' build.pk%}#errors" class="error">{{build.errors.count}} error{{build.errors.count|pluralize}}</a> |
| 48 | {% endif %} | 48 | {% endif %} |
| 49 | </div> | 49 | </div> |
| 50 | <div class="span2 lead"> | 50 | <div class="span2 lead"> |
| 51 | {% if build.warnings_no %} | 51 | {% if build.warnings.count %} |
| 52 | <i class="icon-warning-sign yellow"></i> <a href="{%url 'builddashboard' build.pk%}#warnings" class="warning">{{build.warnings_no}} warning{{build.warnings_no|pluralize}}</a> | 52 | <i class="icon-warning-sign yellow"></i> <a href="{%url 'builddashboard' build.pk%}#warnings" class="warning">{{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a> |
| 53 | {% endif %} | 53 | {% endif %} |
| 54 | </div> | 54 | </div> |
| 55 | <div class="lead "> | 55 | <div class="lead "> |
| 56 | <span class="lead{%if not MANAGED or not build.project%} pull-right{%endif%}"> | 56 | <span class="lead"> |
| 57 | Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent|sectohms }}</a> | 57 | Build time: <a href="{% url 'buildtime' build.pk %}">{{ build.timespent_seconds|sectohms }}</a> |
| 58 | </span> | 58 | </span> |
| 59 | <button class="btn | ||
| 60 | {% if build.outcome == build.SUCCEEDED %} | ||
| 61 | btn-success | ||
| 62 | {% elif build.outcome == build.FAILED %} | ||
| 63 | btn-danger | ||
| 64 | {% else %} | ||
| 65 | btn-info | ||
| 66 | {%endif%} | ||
| 67 | pull-right" | ||
| 68 | onclick='scheduleBuild({% url 'projectbuilds' build.project.id as bpi %}{{bpi|json}}, | ||
| 69 | {{build.project.name|json}}, | ||
| 70 | {% url 'project' build.project.id as bpurl %}{{bpurl|json}}, | ||
| 71 | {{build.target_set.all|get_tasks|json}})'> | ||
| 72 | |||
| 73 | Run again | ||
| 74 | </button> | ||
| 59 | </div> | 75 | </div> |
| 60 | {%endif%} | 76 | {%endif%} |
| 61 | {%if build.outcome == build.IN_PROGRESS %} | 77 | {%if build.outcome == build.IN_PROGRESS %} |
| @@ -77,6 +93,7 @@ | |||
| 77 | function scheduleBuild(url, projectName, projectUrl, buildlist) { | 93 | function scheduleBuild(url, projectName, projectUrl, buildlist) { |
| 78 | console.log("scheduleBuild"); | 94 | console.log("scheduleBuild"); |
| 79 | libtoaster.startABuild(url, null, buildlist.join(" "), function(){ | 95 | libtoaster.startABuild(url, null, buildlist.join(" "), function(){ |
| 96 | console.log("reloading page"); | ||
| 80 | window.location.reload(); | 97 | window.location.reload(); |
| 81 | }, null); | 98 | }, null); |
| 82 | } | 99 | } |
diff --git a/bitbake/lib/toaster/toastergui/templates/package_detail_base.html b/bitbake/lib/toaster/toastergui/templates/package_detail_base.html index e2ec75d157..a24bc8e436 100644 --- a/bitbake/lib/toaster/toastergui/templates/package_detail_base.html +++ b/bitbake/lib/toaster/toastergui/templates/package_detail_base.html | |||
| @@ -136,13 +136,6 @@ | |||
| 136 | 136 | ||
| 137 | <dd class="iscommit">{{package.recipe.layer_version.commit}}</dd> | 137 | <dd class="iscommit">{{package.recipe.layer_version.commit}}</dd> |
| 138 | 138 | ||
| 139 | {% if not MANAGED or not build.project %} | ||
| 140 | <dt> | ||
| 141 | Layer directory | ||
| 142 | <i class="icon-question-sign get-help" title="Path to the layer providing the recipe that builds this package"></i> | ||
| 143 | </dt> | ||
| 144 | <dd><code>{{package.recipe.layer_version.local_path}}</code></dd> | ||
| 145 | {% endif %} | ||
| 146 | </dl> | 139 | </dl> |
| 147 | </div> <!-- row4 well --> | 140 | </div> <!-- row4 well --> |
| 148 | {% endblock twocolumns %} | 141 | {% endblock twocolumns %} |
diff --git a/bitbake/lib/toaster/toastergui/templates/projectbuilds.html b/bitbake/lib/toaster/toastergui/templates/projectbuilds.html index 896c3b5af7..ac87d8c166 100644 --- a/bitbake/lib/toaster/toastergui/templates/projectbuilds.html +++ b/bitbake/lib/toaster/toastergui/templates/projectbuilds.html | |||
| @@ -79,25 +79,20 @@ | |||
| 79 | {% query build.task_build outcome=4 order__gt=0 as exectask%} | 79 | {% query build.task_build outcome=4 order__gt=0 as exectask%} |
| 80 | {% if exectask.count == 1 %} | 80 | {% if exectask.count == 1 %} |
| 81 | <a href="{% url "task" build.id exectask.0.id %}">{{exectask.0.recipe.name}}.{{exectask.0.task_name}}</a> | 81 | <a href="{% url "task" build.id exectask.0.id %}">{{exectask.0.recipe.name}}.{{exectask.0.task_name}}</a> |
| 82 | {% if MANAGED and build.project %} | ||
| 83 | <a href="{% url 'build_artifact' build.id "tasklogfile" exectask.0.id %}"> | 82 | <a href="{% url 'build_artifact' build.id "tasklogfile" exectask.0.id %}"> |
| 84 | <i class="icon-download-alt" title="" data-original-title="Download task log file"></i> | 83 | <i class="icon-download-alt" title="" data-original-title="Download task log file"></i> |
| 85 | </a> | 84 | </a> |
| 86 | {% endif %} | ||
| 87 | {% elif exectask.count > 1%} | 85 | {% elif exectask.count > 1%} |
| 88 | <a href="{% url "tasks" build.id %}?filter=outcome%3A4">{{exectask.count}} task{{exectask.count|pluralize}}</a> | 86 | <a href="{% url "tasks" build.id %}?filter=outcome%3A4">{{exectask.count}} task{{exectask.count|pluralize}}</a> |
| 89 | {%endif%} | 87 | {%endif%} |
| 90 | </td> | 88 | </td> |
| 91 | <td class="errors_no"> | 89 | <td class="errors.count"> |
| 92 | {% if build.errors_no %} | 90 | {% if build.errors.count %} |
| 93 | <a class="errors_no error" href="{% url "builddashboard" build.id %}#errors">{{build.errors_no}} error{{build.errors_no|pluralize}}</a> | 91 | <a class="errors.count error" href="{% url "builddashboard" build.id %}#errors">{{build.errors.count}} error{{build.errors.count|pluralize}}</a> |
| 94 | {%endif%} | 92 | {%endif%} |
| 95 | </td> | 93 | </td> |
| 96 | <td class="warnings_no">{% if build.warnings_no %}<a class="warnings_no warning" href="{% url "builddashboard" build.id %}#warnings">{{build.warnings_no}} warning{{build.warnings_no|pluralize}}</a>{%endif%}</td> | 94 | <td class="warnings.count">{% if build.warnings.count %}<a class="warnings.count warning" href="{% url "builddashboard" build.id %}#warnings">{{build.warnings.count}} warning{{build.warnings.count|pluralize}}</a>{%endif%}</td> |
| 97 | <td class="time"><a href="{% url "buildtime" build.id %}">{{build.timespent|sectohms}}</a></td> | 95 | <td class="time"><a href="{% url "buildtime" build.id %}">{{build.timespent_seconds|sectohms}}</a></td> |
| 98 | {% if not MANAGED or not build.project %} | ||
| 99 | <td class="log">{{build.cooker_log_path}}</td> | ||
| 100 | {% endif %} | ||
| 101 | <td class="output"> | 96 | <td class="output"> |
| 102 | {% if build.outcome == build.SUCCEEDED %} | 97 | {% if build.outcome == build.SUCCEEDED %} |
| 103 | <a href="{%url "builddashboard" build.id%}#images">{{fstypes|get_dict_value:build.id}}</a> | 98 | <a href="{%url "builddashboard" build.id%}#images">{{fstypes|get_dict_value:build.id}}</a> |
| @@ -113,23 +108,23 @@ | |||
| 113 | <tr class="data"> | 108 | <tr class="data"> |
| 114 | <td class="outcome">{% if br.state == br.REQ_FAILED %}<i class="icon-minus-sign error"></i>{%else%}FIXME_build_request_state{%endif%}</td> | 109 | <td class="outcome">{% if br.state == br.REQ_FAILED %}<i class="icon-minus-sign error"></i>{%else%}FIXME_build_request_state{%endif%}</td> |
| 115 | <td class="target"> | 110 | <td class="target"> |
| 116 | <a href="{% url "buildrequestdetails" br.project.id br.id %}"><span data-toggle="tooltip" {%if br.brtarget_set.all.count > 1%}title="Targets: {%for target in br.brtarget_set.all%}{{target.target}} {%endfor%}"{%endif%}>{{br.brtarget_set.all.0.target}} {%if br.brtarget_set.all.count > 1%}(+ {{br.brtarget_set.all.count|add:"-1"}}){%endif%} </span></a> | 111 | <a href="{% url "builddashboard" br.id %}"><span data-toggle="tooltip" {%if br.brtarget_set.all.count > 1%}title="Targets: {%for target in br.brtarget_set.all%}{{target.target}} {%endfor%}"{%endif%}>{{br.brtarget_set.all.0.target}} {%if br.brtarget_set.all.count > 1%}(+ {{br.brtarget_set.all.count|add:"-1"}}){%endif%} </span></a> |
| 117 | </td> | 112 | </td> |
| 118 | <td class="machine"> | 113 | <td class="machine"> |
| 119 | <a href="{% url "buildrequestdetails" br.project.id br.id %}">{{br.machine}}</a> | 114 | <a href="{% url "builddashboard" br.id %}">{{br.machine}}</a> |
| 120 | </td> | 115 | </td> |
| 121 | <td class="started_on"> | 116 | <td class="started_on"> |
| 122 | <a href="{% url "buildrequestdetails" br.project.id br.id %}">{{br.created|date:"d/m/y H:i"}}</a> | 117 | <a href="{% url "builddashboard" br.id %}">{{br.created|date:"d/m/y H:i"}}</a> |
| 123 | </td> | 118 | </td> |
| 124 | <td class="completed_on"> | 119 | <td class="completed_on"> |
| 125 | <a href="{% url "buildrequestdetails" br.project.id br.id %}">{{br.updated|date:"d/m/y H:i"}}</a> | 120 | <a href="{% url "builddashboard" br.id %}">{{br.updated|date:"d/m/y H:i"}}</a> |
| 126 | </td> | 121 | </td> |
| 127 | <td class="failed_tasks error"> | 122 | <td class="failed_tasks error"> |
| 128 | </td> | 123 | </td> |
| 129 | <td class="errors_no"> | 124 | <td class="errors.count"> |
| 130 | <a class="errors_no error" href="{% url "buildrequestdetails" br.project.id br.id %}#errors">{{br.brerror_set.all.count}} error{{br.brerror_set.all.count|pluralize}}</a> | 125 | <a class="errors.count error" href="{% url "builddashboard" br.id %}#errors">{{br.brerror_set.all.count}} error{{br.brerror_set.all.count|pluralize}}</a> |
| 131 | </td> | 126 | </td> |
| 132 | <td class="warnings_no"> | 127 | <td class="warnings.count"> |
| 133 | </td> | 128 | </td> |
| 134 | <td class="time"> | 129 | <td class="time"> |
| 135 | {{br.timespent.total_seconds|sectohms}} | 130 | {{br.timespent.total_seconds|sectohms}} |
diff --git a/bitbake/lib/toaster/toastergui/templates/projects.html b/bitbake/lib/toaster/toastergui/templates/projects.html index 9c4346c45a..e6519530ef 100644 --- a/bitbake/lib/toaster/toastergui/templates/projects.html +++ b/bitbake/lib/toaster/toastergui/templates/projects.html | |||
| @@ -26,7 +26,10 @@ | |||
| 26 | <div class="row-fluid"> | 26 | <div class="row-fluid"> |
| 27 | <div class="alert"> | 27 | <div class="alert"> |
| 28 | <form class="no-results input-append" id="searchform"> | 28 | <form class="no-results input-append" id="searchform"> |
| 29 | <input id="search" name="search" class="input-xxlarge" type="text" value="{{request.GET.search}}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{% endif %} | 29 | <input id="search" name="search" class="input-xxlarge" type="text" value=" |
| 30 | {% if request.GET.search %} | ||
| 31 | {{request.GET.search}} | ||
| 32 | {% endif %}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{% endif %} | ||
| 30 | <button class="btn" type="submit" value="Search">Search</button> | 33 | <button class="btn" type="submit" value="Search">Search</button> |
| 31 | <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all projects</button> | 34 | <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all projects</button> |
| 32 | </form> | 35 | </form> |
| @@ -58,8 +61,8 @@ | |||
| 58 | <td><a href="{% url 'projectbuilds' o.id %}">{{o.get_number_of_builds}}</a></td> | 61 | <td><a href="{% url 'projectbuilds' o.id %}">{{o.get_number_of_builds}}</a></td> |
| 59 | <td class="loutcome"><a href="{% url "builddashboard" o.get_last_build_id %}">{%if o.get_last_outcome == build_SUCCEEDED%}<i class="icon-ok-sign success"></i>{%elif o.get_last_outcome == build_FAILED%}<i class="icon-minus-sign error"></i>{%else%}{%endif%}</a></td> | 62 | <td class="loutcome"><a href="{% url "builddashboard" o.get_last_build_id %}">{%if o.get_last_outcome == build_SUCCEEDED%}<i class="icon-ok-sign success"></i>{%elif o.get_last_outcome == build_FAILED%}<i class="icon-minus-sign error"></i>{%else%}{%endif%}</a></td> |
| 60 | <td class="ltarget"><a href="{% url "builddashboard" o.get_last_build_id %}">{{o.get_last_target}} </a></td> | 63 | <td class="ltarget"><a href="{% url "builddashboard" o.get_last_build_id %}">{{o.get_last_target}} </a></td> |
| 61 | <td class="lerrors">{% if o.get_last_errors %}<a class="errors_no error" href="{% url "builddashboard" o.get_last_build_id %}#errors">{{o.get_last_errors}} error{{o.get_last_errors|pluralize}}</a>{%endif%}</td> | 64 | <td class="lerrors">{% if o.get_last_errors %}<a class="errors.count error" href="{% url "builddashboard" o.get_last_build_id %}#errors">{{o.get_last_errors}} error{{o.get_last_errors|pluralize}}</a>{%endif%}</td> |
| 62 | <td class="lwarnings">{% if o.get_last_warnings %}<a class="warnings_no warning" href="{% url "builddashboard" o.get_last_build_id %}#warnings">{{o.get_last_warnings}} warning{{o.get_last_warnings|pluralize}}</a>{%endif%}</td> | 65 | <td class="lwarnings">{% if o.get_last_warnings %}<a class="warnings.count warning" href="{% url "builddashboard" o.get_last_build_id %}#warnings">{{o.get_last_warnings}} warning{{o.get_last_warnings|pluralize}}</a>{%endif%}</td> |
| 63 | <td class="limagefiles"> | 66 | <td class="limagefiles"> |
| 64 | {% if o.get_last_outcome == build_SUCCEEDED %} | 67 | {% if o.get_last_outcome == build_SUCCEEDED %} |
| 65 | <a href="{%url "builddashboard" o.get_last_build_id %}#images">{{fstypes|get_dict_value:o.id}}</a> | 68 | <a href="{%url "builddashboard" o.get_last_build_id %}#images">{{fstypes|get_dict_value:o.id}}</a> |
diff --git a/bitbake/lib/toaster/toastergui/templates/recipe.html b/bitbake/lib/toaster/toastergui/templates/recipe.html index dd8753d7fc..b5e4192d6b 100644 --- a/bitbake/lib/toaster/toastergui/templates/recipe.html +++ b/bitbake/lib/toaster/toastergui/templates/recipe.html | |||
| @@ -53,13 +53,6 @@ | |||
| 53 | </dt> | 53 | </dt> |
| 54 | <dd>{{layer.name}}</dd> | 54 | <dd>{{layer.name}}</dd> |
| 55 | 55 | ||
| 56 | {% if not MANAGED or not build.project %} | ||
| 57 | <dt> | ||
| 58 | <i class="icon-question-sign get-help" title="Path to the layer providing the recipe"></i> | ||
| 59 | Layer directory | ||
| 60 | </dt> | ||
| 61 | <dd><code>{{object.layer_version.local_path}}</code></dd> | ||
| 62 | {% endif %} | ||
| 63 | <dt> | 56 | <dt> |
| 64 | <i class="icon-question-sign get-help" title="Path to the recipe .bb file"></i> | 57 | <i class="icon-question-sign get-help" title="Path to the recipe .bb file"></i> |
| 65 | Recipe file | 58 | Recipe file |
| @@ -126,7 +119,7 @@ | |||
| 126 | 119 | ||
| 127 | <td> | 120 | <td> |
| 128 | <a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.get_outcome_display}} </a> | 121 | <a {{ task|task_color }} href="{% url "task" build.pk task.pk %}">{{task.get_outcome_display}} </a> |
| 129 | {% if MANAGED and build.project and task.outcome = task.OUTCOME_FAILED %} | 122 | {% if task.outcome = task.OUTCOME_FAILED %} |
| 130 | <a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}"> | 123 | <a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}"> |
| 131 | <i class="icon-download-alt" title="Download task log file"></i> | 124 | <i class="icon-download-alt" title="Download task log file"></i> |
| 132 | </a> | 125 | </a> |
diff --git a/bitbake/lib/toaster/toastergui/templates/recipes.html b/bitbake/lib/toaster/toastergui/templates/recipes.html index 8d4494e7ef..5cdac437c4 100644 --- a/bitbake/lib/toaster/toastergui/templates/recipes.html +++ b/bitbake/lib/toaster/toastergui/templates/recipes.html | |||
| @@ -28,7 +28,7 @@ | |||
| 28 | <div class="row-fluid"> | 28 | <div class="row-fluid"> |
| 29 | <div class="alert"> | 29 | <div class="alert"> |
| 30 | <form class="no-results input-append" id="searchform"> | 30 | <form class="no-results input-append" id="searchform"> |
| 31 | <input id="search" name="search" class="input-xxlarge" type="text" value="{{request.GET.search}}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{% endif %} | 31 | <input id="search" name="search" class="input-xxlarge" type="text" value="{%if request.GET.search%}{{request.GET.search}}{%endif%}"/>{% if request.GET.search %}<a href="javascript:$('#search').val('');searchform.submit()" class="add-on btn" tabindex="-1"><i class="icon-remove"></i></a>{% endif %} |
| 32 | <button class="btn" type="submit" value="Search">Search</button> | 32 | <button class="btn" type="submit" value="Search">Search</button> |
| 33 | <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all recipes</button> | 33 | <button class="btn btn-link" onclick="javascript:$('#search').val('');searchform.submit()">Show all recipes</button> |
| 34 | </form> | 34 | </form> |
| @@ -102,11 +102,6 @@ | |||
| 102 | {{recipe.layer_version.commit|truncatechars:13}} | 102 | {{recipe.layer_version.commit|truncatechars:13}} |
| 103 | </a> | 103 | </a> |
| 104 | </td> | 104 | </td> |
| 105 | |||
| 106 | {% if not MANAGED or not build.project %} | ||
| 107 | <!-- Layer directory --> | ||
| 108 | <td class="layer_version__local_path">{{recipe.layer_version.local_path}}</td> | ||
| 109 | {% endif %} | ||
| 110 | </tr> | 105 | </tr> |
| 111 | 106 | ||
| 112 | {% endfor %} | 107 | {% endfor %} |
diff --git a/bitbake/lib/toaster/toastergui/templates/runagain.html b/bitbake/lib/toaster/toastergui/templates/runagain.html deleted file mode 100644 index b4ba5fbf15..0000000000 --- a/bitbake/lib/toaster/toastergui/templates/runagain.html +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | {% load projecttags %} | ||
| 2 | onclick='scheduleBuild( | ||
| 3 | {% url 'projectbuilds' buildrequest.project.id as bpi %}{{bpi|json}}, | ||
| 4 | {{buildrequest.project.name|json}}, | ||
| 5 | {% url 'project' buildrequest.project.id as bpurl %}{{bpurl|json}}, | ||
| 6 | {{buildrequest.brtarget_set.all|get_tasks|json}}) | ||
| 7 | '>Run again | ||
diff --git a/bitbake/lib/toaster/toastergui/templates/target.html b/bitbake/lib/toaster/toastergui/templates/target.html index e7febaf22a..fa59f4eeba 100644 --- a/bitbake/lib/toaster/toastergui/templates/target.html +++ b/bitbake/lib/toaster/toastergui/templates/target.html | |||
| @@ -152,11 +152,6 @@ | |||
| 152 | {{package.recipe.layer_version.commit|truncatechars:13}} | 152 | {{package.recipe.layer_version.commit|truncatechars:13}} |
| 153 | </a> | 153 | </a> |
| 154 | </td> | 154 | </td> |
| 155 | {% if not MANAGED or not build.project %} | ||
| 156 | <td class="layer_directory"> | ||
| 157 | {{ package.recipe.layer_version.local_path }} | ||
| 158 | </td> | ||
| 159 | {% endif %} | ||
| 160 | </tr> | 155 | </tr> |
| 161 | {% endfor %} | 156 | {% endfor %} |
| 162 | 157 | ||
diff --git a/bitbake/lib/toaster/toastergui/templates/task.html b/bitbake/lib/toaster/toastergui/templates/task.html index 6e06ddfa31..635098a024 100644 --- a/bitbake/lib/toaster/toastergui/templates/task.html +++ b/bitbake/lib/toaster/toastergui/templates/task.html | |||
| @@ -23,18 +23,7 @@ | |||
| 23 | {%if task.task_executed %} | 23 | {%if task.task_executed %} |
| 24 | {# executed tasks outcome #} | 24 | {# executed tasks outcome #} |
| 25 | {% if task.logfile %} | 25 | {% if task.logfile %} |
| 26 | {% if MANAGED and build.project %} | ||
| 27 | <a class="btn btn-large" href="{% url 'build_artifact' build.id "tasklogfile" task.pk %}" style="margin:15px;">Download task log</a> | 26 | <a class="btn btn-large" href="{% url 'build_artifact' build.id "tasklogfile" task.pk %}" style="margin:15px;">Download task log</a> |
| 28 | {% else %} | ||
| 29 | <dl class="dl-horizontal"> | ||
| 30 | <dt> | ||
| 31 | <i class="icon-question-sign get-help" title="Path the task log file"></i> Log file | ||
| 32 | </dt> | ||
| 33 | <dd> | ||
| 34 | <code>{{task.logfile}}</code> | ||
| 35 | </dd> | ||
| 36 | </dl> | ||
| 37 | {% endif %} | ||
| 38 | {% endif %} | 27 | {% endif %} |
| 39 | {# show stack trace for failed task #} | 28 | {# show stack trace for failed task #} |
| 40 | {% if task.outcome == task.OUTCOME_FAILED and log_head %} | 29 | {% if task.outcome == task.OUTCOME_FAILED and log_head %} |
| @@ -130,22 +119,12 @@ | |||
| 130 | </dd> | 119 | </dd> |
| 131 | </dl> | 120 | </dl> |
| 132 | {%elif task.outcome == task.OUTCOME_CACHED%} | 121 | {%elif task.outcome == task.OUTCOME_CACHED%} |
| 133 | {% if MANAGED and build.project %} | ||
| 134 | {% for t in task.get_related_setscene %} | 122 | {% for t in task.get_related_setscene %} |
| 135 | {% if forloop.last %} | 123 | {% if forloop.last %} |
| 136 | <a class="btn btn-large" href="{% url 'build_artifact' build.id "tasklogfile" t.pk %}" style="margin:15px;">Download task log</a> | 124 | <a class="btn btn-large" href="{% url 'build_artifact' build.id "tasklogfile" t.pk %}" style="margin:15px;">Download task log</a> |
| 137 | {% endif %} | 125 | {% endif %} |
| 138 | {% endfor %} | 126 | {% endfor %} |
| 139 | {% else %} | 127 | |
| 140 | <dl class="dl-horizontal"> | ||
| 141 | <dt> | ||
| 142 | <i class="icon-question-sign get-help" title="Path the task log file"></i> Log file | ||
| 143 | </dt> | ||
| 144 | <dd> | ||
| 145 | <code>{% for t in task.get_related_setscene %} {{t.logfile}} {% endfor %}</code> | ||
| 146 | </dd> | ||
| 147 | </dl> | ||
| 148 | {% endif %} | ||
| 149 | {%elif task.outcome == task.OUTCOME_EMPTY%} | 128 | {%elif task.outcome == task.OUTCOME_EMPTY%} |
| 150 | <div class="alert alert-info details"> | 129 | <div class="alert alert-info details"> |
| 151 | This task is empty because it has the <code>noexec</code> flag set to <code>1</code>, or the task function is empty | 130 | This task is empty because it has the <code>noexec</code> flag set to <code>1</code>, or the task function is empty |
| @@ -200,20 +179,7 @@ | |||
| 200 | <strong>Failed</strong> to restore output from sstate cache. The file was found but could not be unpacked. | 179 | <strong>Failed</strong> to restore output from sstate cache. The file was found but could not be unpacked. |
| 201 | </div> | 180 | </div> |
| 202 | <dl class="dl-horizontal"> | 181 | <dl class="dl-horizontal"> |
| 203 | {% if MANAGED and build.project %} | ||
| 204 | <a href="{% url 'build_artifact' build.id "tasklogfile" task.pk %}" style="margin:15px;">Download log</a> | 182 | <a href="{% url 'build_artifact' build.id "tasklogfile" task.pk %}" style="margin:15px;">Download log</a> |
| 205 | {% else %} | ||
| 206 | <dt> | ||
| 207 | <i class="icon-question-sign get-help" title="Path to the cache attempt log file"></i> | ||
| 208 | Log file | ||
| 209 | </dt> | ||
| 210 | <dd><code>{{task.logfile}}</code></dd> | ||
| 211 | <dt> | ||
| 212 | <i class="icon-question-sign get-help" title="How long it took the cache attempt to finish in seconds"></i> | ||
| 213 | Time (secs) | ||
| 214 | </dt> | ||
| 215 | <dd>{{task.elapsed_time|format_none_and_zero}}</dd> | ||
| 216 | {% endif %} | ||
| 217 | </dl> | 183 | </dl> |
| 218 | <div class="alert alert-info"> | 184 | <div class="alert alert-info"> |
| 219 | Running the real task instead. | 185 | Running the real task instead. |
diff --git a/bitbake/lib/toaster/toastergui/templates/tasks.html b/bitbake/lib/toaster/toastergui/templates/tasks.html index 32c0552360..b18b5c7c46 100644 --- a/bitbake/lib/toaster/toastergui/templates/tasks.html +++ b/bitbake/lib/toaster/toastergui/templates/tasks.html | |||
| @@ -93,7 +93,7 @@ | |||
| 93 | </td> | 93 | </td> |
| 94 | <td class="outcome"> | 94 | <td class="outcome"> |
| 95 | <a href="{%url "task" build.pk task.pk%}">{{task.get_outcome_display}} </a> | 95 | <a href="{%url "task" build.pk task.pk%}">{{task.get_outcome_display}} </a> |
| 96 | {% if MANAGED and build.project and task.outcome = task.OUTCOME_FAILED %} | 96 | {% if task.outcome = task.OUTCOME_FAILED %} |
| 97 | <a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}"> | 97 | <a href="{% url 'build_artifact' build.pk "tasklogfile" task.pk %}"> |
| 98 | <i class="icon-download-alt" title="Download task log file"></i> | 98 | <i class="icon-download-alt" title="Download task log file"></i> |
| 99 | </a> | 99 | </a> |
| @@ -113,11 +113,6 @@ | |||
| 113 | {{task.disk_io|format_none_and_zero}} | 113 | {{task.disk_io|format_none_and_zero}} |
| 114 | </td> | 114 | </td> |
| 115 | 115 | ||
| 116 | {% if not MANAGED or not build.project %} | ||
| 117 | <td class="task_log"> | ||
| 118 | {{task.logfile}} | ||
| 119 | </td> | ||
| 120 | {% endif %} | ||
| 121 | </tr> | 116 | </tr> |
| 122 | {% endfor %} | 117 | {% endfor %} |
| 123 | 118 | ||
diff --git a/bitbake/lib/toaster/toastergui/urls.py b/bitbake/lib/toaster/toastergui/urls.py index 681f06787a..feb15139fb 100644 --- a/bitbake/lib/toaster/toastergui/urls.py +++ b/bitbake/lib/toaster/toastergui/urls.py | |||
| @@ -131,9 +131,6 @@ urlpatterns = patterns('toastergui.views', | |||
| 131 | url(r'^xhr_importlayer/$', 'xhr_importlayer', name='xhr_importlayer'), | 131 | url(r'^xhr_importlayer/$', 'xhr_importlayer', name='xhr_importlayer'), |
| 132 | url(r'^xhr_updatelayer/$', 'xhr_updatelayer', name='xhr_updatelayer'), | 132 | url(r'^xhr_updatelayer/$', 'xhr_updatelayer', name='xhr_updatelayer'), |
| 133 | 133 | ||
| 134 | # dashboard for failed build requests | ||
| 135 | url(r'^project/(?P<pid>\d+)/buildrequest/(?P<bid>\d+)$', 'buildrequestdetails', name='buildrequestdetails'), | ||
| 136 | |||
| 137 | # default redirection | 134 | # default redirection |
| 138 | url(r'^$', RedirectView.as_view( url= 'landing')), | 135 | url(r'^$', RedirectView.as_view( url= 'landing')), |
| 139 | ) | 136 | ) |
diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index 00b1387d63..8c6f9fa84f 100755 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py | |||
| @@ -21,7 +21,7 @@ | |||
| 21 | 21 | ||
| 22 | import operator,re | 22 | import operator,re |
| 23 | 23 | ||
| 24 | from django.db.models import Q, Sum, Count, Max | 24 | from django.db.models import F, Q, Sum, Count, Max |
| 25 | from django.db import IntegrityError | 25 | from django.db import IntegrityError |
| 26 | from django.shortcuts import render, redirect | 26 | from django.shortcuts import render, redirect |
| 27 | from orm.models import Build, Target, Task, Layer, Layer_Version, Recipe, LogMessage, Variable | 27 | from orm.models import Build, Target, Task, Layer, Layer_Version, Recipe, LogMessage, Variable |
| @@ -81,15 +81,15 @@ def _project_recent_build_list(prj): | |||
| 81 | "errors": map(lambda y: {"type": y.lineno, "msg": y.message, "tb": y.pathname}, (x.logmessage_set.filter(level__gte=LogMessage.WARNING)|x.logmessage_set.filter(level=LogMessage.EXCEPTION))), | 81 | "errors": map(lambda y: {"type": y.lineno, "msg": y.message, "tb": y.pathname}, (x.logmessage_set.filter(level__gte=LogMessage.WARNING)|x.logmessage_set.filter(level=LogMessage.EXCEPTION))), |
| 82 | "updated": x.completed_on.strftime('%s')+"000", | 82 | "updated": x.completed_on.strftime('%s')+"000", |
| 83 | "command_time": (x.completed_on - x.started_on).total_seconds(), | 83 | "command_time": (x.completed_on - x.started_on).total_seconds(), |
| 84 | "br_page_url": reverse('buildrequestdetails', args=(x.project.id, x.pk) ), | 84 | "br_page_url": reverse('builddashboard', args=(x.pk,) ), |
| 85 | "build" : map( lambda y: {"id": y.pk, | 85 | "build" : map( lambda y: {"id": y.pk, |
| 86 | "status": y.get_outcome_display(), | 86 | "status": y.get_outcome_display(), |
| 87 | "completed_on" : y.completed_on.strftime('%s')+"000", | 87 | "completed_on" : y.completed_on.strftime('%s')+"000", |
| 88 | "build_time" : (y.completed_on - y.started_on).total_seconds(), | 88 | "build_time" : (y.completed_on - y.started_on).total_seconds(), |
| 89 | "build_page_url" : reverse('builddashboard', args=(y.pk,)), | 89 | "build_page_url" : reverse('builddashboard', args=(y.pk,)), |
| 90 | 'build_time_page_url': reverse('buildtime', args=(y.pk,)), | 90 | 'build_time_page_url': reverse('buildtime', args=(y.pk,)), |
| 91 | "errors": y.errors_no, | 91 | "errors": y.errors.count(), |
| 92 | "warnings": y.warnings_no, | 92 | "warnings": y.warnings.count(), |
| 93 | "completeper": y.completeper() if y.outcome == Build.IN_PROGRESS else "0", | 93 | "completeper": y.completeper() if y.outcome == Build.IN_PROGRESS else "0", |
| 94 | "eta": y.eta().strftime('%s')+"000" if y.outcome == Build.IN_PROGRESS else "0", | 94 | "eta": y.eta().strftime('%s')+"000" if y.outcome == Build.IN_PROGRESS else "0", |
| 95 | }, [x]), | 95 | }, [x]), |
| @@ -1906,7 +1906,7 @@ if True: | |||
| 1906 | (filter_string, search_term, ordering_string) = _search_tuple(request, Build) | 1906 | (filter_string, search_term, ordering_string) = _search_tuple(request, Build) |
| 1907 | # post-process any date range filters | 1907 | # post-process any date range filters |
| 1908 | filter_string,daterange_selected = _modify_date_range_filter(filter_string) | 1908 | filter_string,daterange_selected = _modify_date_range_filter(filter_string) |
| 1909 | queryset_all = queryset_all.select_related("project") | 1909 | queryset_all = queryset_all.select_related("project").annotate(errors_no = Count('logmessage', only=Q(logmessage__level=LogMessage.ERROR)|Q(logmessage__level=LogMessage.EXCEPTION))).annotate(warnings_no = Count('logmessage', only=Q(logmessage__level=LogMessage.WARNING))).extra(select={'timespent':'completed_on - started_on'}) |
| 1910 | queryset_with_search = _get_queryset(Build, queryset_all, None, search_term, ordering_string, '-completed_on') | 1910 | queryset_with_search = _get_queryset(Build, queryset_all, None, search_term, ordering_string, '-completed_on') |
| 1911 | queryset = _get_queryset(Build, queryset_all, filter_string, search_term, ordering_string, '-completed_on') | 1911 | queryset = _get_queryset(Build, queryset_all, filter_string, search_term, ordering_string, '-completed_on') |
| 1912 | 1912 | ||
| @@ -2841,10 +2841,3 @@ if True: | |||
| 2841 | 2841 | ||
| 2842 | _set_parameters_values(pagesize, orderby, request) | 2842 | _set_parameters_values(pagesize, orderby, request) |
| 2843 | return context | 2843 | return context |
| 2844 | |||
| 2845 | @_template_renderer("buildrequestdetails.html") | ||
| 2846 | def buildrequestdetails(request, pid, bid): | ||
| 2847 | context = { | ||
| 2848 | 'buildrequest' : Build.objects.get(pk = bid, project_id = pid).buildrequest | ||
| 2849 | } | ||
| 2850 | return context | ||
