From c527fd1f14c27855a37f2e8ac5346ce8d940ced2 Mon Sep 17 00:00:00 2001 From: Tudor Florea Date: Thu, 16 Oct 2014 03:05:19 +0200 Subject: initial commit for Enea Linux 4.0-140929 Migrated from the internal git server on the daisy-enea-point-release branch Signed-off-by: Tudor Florea --- bitbake/lib/toaster/toastergui/templates/base.html | 74 ++++++ .../toastergui/templates/basebuilddetailpage.html | 28 ++ .../toastergui/templates/basebuildpage.html | 80 ++++++ .../toastergui/templates/basetable_bottom.html | 85 +++++++ .../toastergui/templates/basetable_top.html | 87 +++++++ .../lib/toaster/toastergui/templates/bfile.html | 24 ++ .../lib/toaster/toastergui/templates/bpackage.html | 108 ++++++++ .../lib/toaster/toastergui/templates/build.html | 140 ++++++++++ .../toastergui/templates/builddashboard.html | 198 ++++++++++++++ .../toaster/toastergui/templates/buildtime.html | 4 + .../toastergui/templates/configuration.html | 73 ++++++ .../toaster/toastergui/templates/configvars.html | 130 ++++++++++ .../lib/toaster/toastergui/templates/cpuusage.html | 4 + .../lib/toaster/toastergui/templates/dirinfo.html | 237 +++++++++++++++++ .../lib/toaster/toastergui/templates/diskio.html | 4 + .../toastergui/templates/filtersnippet.html | 39 +++ .../lib/toaster/toastergui/templates/layer.html | 34 +++ .../lib/toaster/toastergui/templates/package.html | 36 +++ .../templates/package_built_dependencies.html | 99 +++++++ .../toastergui/templates/package_built_detail.html | 65 +++++ .../toastergui/templates/package_detail_base.html | 145 +++++++++++ .../templates/package_included_dependencies.html | 110 ++++++++ .../templates/package_included_detail.html | 44 ++++ .../package_included_reverse_dependencies.html | 50 ++++ .../templates/package_included_tabs.html | 33 +++ .../lib/toaster/toastergui/templates/recipe.html | 273 ++++++++++++++++++++ .../lib/toaster/toastergui/templates/recipes.html | 102 ++++++++ .../toaster/toastergui/templates/tablesort.html | 38 +++ .../lib/toaster/toastergui/templates/target.html | 163 ++++++++++++ bitbake/lib/toaster/toastergui/templates/task.html | 283 +++++++++++++++++++++ .../lib/toaster/toastergui/templates/tasks.html | 133 ++++++++++ 31 files changed, 2923 insertions(+) create mode 100644 bitbake/lib/toaster/toastergui/templates/base.html create mode 100755 bitbake/lib/toaster/toastergui/templates/basebuilddetailpage.html create mode 100644 bitbake/lib/toaster/toastergui/templates/basebuildpage.html create mode 100644 bitbake/lib/toaster/toastergui/templates/basetable_bottom.html create mode 100644 bitbake/lib/toaster/toastergui/templates/basetable_top.html create mode 100644 bitbake/lib/toaster/toastergui/templates/bfile.html create mode 100644 bitbake/lib/toaster/toastergui/templates/bpackage.html create mode 100644 bitbake/lib/toaster/toastergui/templates/build.html create mode 100644 bitbake/lib/toaster/toastergui/templates/builddashboard.html create mode 100644 bitbake/lib/toaster/toastergui/templates/buildtime.html create mode 100644 bitbake/lib/toaster/toastergui/templates/configuration.html create mode 100644 bitbake/lib/toaster/toastergui/templates/configvars.html create mode 100644 bitbake/lib/toaster/toastergui/templates/cpuusage.html create mode 100644 bitbake/lib/toaster/toastergui/templates/dirinfo.html create mode 100644 bitbake/lib/toaster/toastergui/templates/diskio.html create mode 100644 bitbake/lib/toaster/toastergui/templates/filtersnippet.html create mode 100644 bitbake/lib/toaster/toastergui/templates/layer.html create mode 100644 bitbake/lib/toaster/toastergui/templates/package.html create mode 100644 bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html create mode 100644 bitbake/lib/toaster/toastergui/templates/package_built_detail.html create mode 100644 bitbake/lib/toaster/toastergui/templates/package_detail_base.html create mode 100644 bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html create mode 100644 bitbake/lib/toaster/toastergui/templates/package_included_detail.html create mode 100644 bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html create mode 100644 bitbake/lib/toaster/toastergui/templates/package_included_tabs.html create mode 100644 bitbake/lib/toaster/toastergui/templates/recipe.html create mode 100755 bitbake/lib/toaster/toastergui/templates/recipes.html create mode 100644 bitbake/lib/toaster/toastergui/templates/tablesort.html create mode 100644 bitbake/lib/toaster/toastergui/templates/target.html create mode 100644 bitbake/lib/toaster/toastergui/templates/task.html create mode 100644 bitbake/lib/toaster/toastergui/templates/tasks.html (limited to 'bitbake/lib/toaster/toastergui/templates') diff --git a/bitbake/lib/toaster/toastergui/templates/base.html b/bitbake/lib/toaster/toastergui/templates/base.html new file mode 100644 index 0000000000..9ca9c9ac3b --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/base.html @@ -0,0 +1,74 @@ + +{% load static %} + + + {% if objectname %} {{objectname|title}} - {% endif %}Toaster + + + + + + + + + + + + + +{% block extraheadcontent %} +{% endblock %} + + + + + +
+{% block pagecontent %} +{% endblock %} +
+ + + diff --git a/bitbake/lib/toaster/toastergui/templates/basebuilddetailpage.html b/bitbake/lib/toaster/toastergui/templates/basebuilddetailpage.html new file mode 100755 index 0000000000..5149768517 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/basebuilddetailpage.html @@ -0,0 +1,28 @@ +{% extends "base.html" %} +{% load humanize %} +{% block pagecontent %} + +
+ +
+ + +
+ + + {% block pagedetailinfomain %}{% endblock %} + + +
+ +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/basebuildpage.html b/bitbake/lib/toaster/toastergui/templates/basebuildpage.html new file mode 100644 index 0000000000..46110519e9 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/basebuildpage.html @@ -0,0 +1,80 @@ +{% extends "base.html" %} +{% load projecttags %} +{% load humanize %} +{% block pagecontent %} + + +
+ +
+ + +
+ +
+ + + + + + + {% block buildinfomain %}{% endblock %} + + + +
+
+ + +{% endblock %} + diff --git a/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html b/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html new file mode 100644 index 0000000000..ac14363798 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/basetable_bottom.html @@ -0,0 +1,85 @@ + + + + + + + + + + + + {% for tc in tablecols %}{% if tc.filter %}{% with objectname=objectname f=tc.filter %} + {% include "filtersnippet.html" %} + {% endwith %}{% endif %} {% endfor %} + diff --git a/bitbake/lib/toaster/toastergui/templates/basetable_top.html b/bitbake/lib/toaster/toastergui/templates/basetable_top.html new file mode 100644 index 0000000000..22c389799a --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/basetable_top.html @@ -0,0 +1,87 @@ +{% load projecttags %} + + + + + + + + + + + + {% for tc in tablecols %}{% endfor %} + + + + diff --git a/bitbake/lib/toaster/toastergui/templates/bfile.html b/bitbake/lib/toaster/toastergui/templates/bfile.html new file mode 100644 index 0000000000..c7f59434a5 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/bfile.html @@ -0,0 +1,24 @@ +{% extends "basebuildpage.html" %} + +{% block pagetitle %}Files for package {{objects.0.bpackage.name}} {% endblock %} +{% block pagetable %} + {% if not objects %} +

No files were recorded for this package!

+ {% else %} + + + + + + + {% for file in objects %} + + + + + + {% endfor %} + + {% endif %} + +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/bpackage.html b/bitbake/lib/toaster/toastergui/templates/bpackage.html new file mode 100644 index 0000000000..2d4948be4b --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/bpackage.html @@ -0,0 +1,108 @@ +{% extends "basebuildpage.html" %} + +{% load projecttags %} + +{% block localbreadcrumb %} +
  • Packages
  • +{% endblock %} + +{% block nav-packages %} +
  • Packages
  • +{% endblock %} + +{% block buildinfomain %} +
    + +{% if not request.GET.filter and not request.GET.search and not objects.paginator.count %} + + + +
    + No packages were built. How did this happen? Well, BitBake reuses as much stuff as possible. + If all of the packages needed were already built and available in your build infrastructure, BitBake + will not rebuild any of them. This might be slightly confusing, but it does make everything faster. +
    + +{% else %} + + + + {% if objects.paginator.count == 0 %} +
    +
    +
    + {% if request.GET.search %}{% endif %} + + + +
    +
    + + {% else %} + {% include "basetable_top.html" %} + + {% for package in objects %} + +
    + + + + + + + + + + + {%if package.recipe%} + + + + + + + + + + + + + + {%else%} + + + + + + + {%endif%} + + + {% endfor %} + + {% include "basetable_bottom.html" %} + {% endif %} {# objects.paginator.count #} +{% endif %} {# Empty #} + +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/build.html b/bitbake/lib/toaster/toastergui/templates/build.html new file mode 100644 index 0000000000..faabd22f8b --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/build.html @@ -0,0 +1,140 @@ +{% extends "base.html" %} + +{% load static %} +{% load projecttags %} +{% load humanize %} + +{% block pagecontent %} +
    + {% if not objects.paginator.count and not request.GET.filter and not request.GET.search %} + +
    + +
    +
    +

    This is Toaster

    +

    A web interface to BitBake, the Yocto Project build system.

    +

    + Show me the manual + I want to contribute +

    +
    +
    + Yocto Project +
    +
    +
    + {% endif %} + + {%if mru.count > 0%} + + {% for build in mru %} +
    +
    + + {%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %} +
    + {% if build.errors_no %} + {{build.errors_no}} error{{build.errors_no|pluralize}} + {% endif %} +
    +
    + {% if build.warnings_no %} + {{build.warnings_no}} warning{{build.warnings_no|pluralize}} + {% endif %} +
    + + {%endif%}{%if build.outcome == build.IN_PROGRESS %} +
    +
    +
    +
    +
    +
    ETA: in {{build.eta|naturaltime}}
    + {%endif%} +
    +
    + + {% endfor %}{%endif%} + + {% if not objects.paginator.count and not request.GET.filter and not request.GET.search %} + + {% if mru.count == 0 %} + +
    + Toaster has not recorded any builds yet. Go build something with Knotty or Hob +
    + {% endif %} + {% else %} + + + {% if objects.paginator.count == 0 %} +
    +
    +
    + {% if request.GET.search %}{% endif %} + + + +
    +
    + + + {% else %} + {% include "basetable_top.html" %} + + {% for build in objects %} +
    + + + + + + + + + + + + + + {% endfor %} + + + {% include "basetable_bottom.html" %} + {% endif %} {# objects.paginator.count #} +{% endif %} {# empty #} + + +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/builddashboard.html b/bitbake/lib/toaster/toastergui/templates/builddashboard.html new file mode 100644 index 0000000000..fa4b194eb9 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/builddashboard.html @@ -0,0 +1,198 @@ +{% extends "basebuildpage.html" %} +{% load humanize %} +{% load projecttags %} + +{% block parentbreadcrumb %} +{{build.get_sorted_target_list.0.target}} {%if build.target_set.all.count > 1%}(+ {{build.target_set.all.count|add:"-1"}}){%endif%} {{build.machine}} ({{build.completed_on|date:"d/m/y H:i"}}) +{% endblock %} + +{% block buildinfomain %} + +
    + +
    + + +
    +
    +
    + + {%if build.outcome == build.SUCCEEDED%}Completed{%elif build.outcome == build.FAILED%}Failed{%else%}{%endif%} + on + {{build.completed_on|date:"d/m/y H:i"}} + +{% if build.warnings_no or build.errors_no %} + with +{% endif %} +{%if build.outcome == build.SUCCEEDED or build.outcome == build.FAILED %} +{% if build.errors_no %} + {{build.errors_no}} error{{build.errors_no|pluralize}} +{% endif %} +{% if build.warnings_no %} +{% if build.errors_no %} + and +{% endif %} + {{build.warnings_no}} warning{{build.warnings_no|pluralize}} +{% endif %} + Build time: {{ build.timespent|sectohms }} +{%endif%} +
    +
    +
    + +{% if build.errors_no %} +
    +
    + +
    +
    +
    + {% for error in logmessages %}{% if error.level == 2 %} +
    +
    {{error.message}}
    +
    + {% endif %}{% endfor %} +
    +
    +
    +
    +
    +{% endif %} + +{%if build.outcome == build.SUCCEEDED%} + +
    + {% if hasImages %} +

    Images

    + {% for target in targets %} + {% if target.target.is_image %} +
    +

    {{target.target}} +

    +
    +
    Packages included
    +
    {{target.npkg}}
    +
    Total package size
    +
    {{target.pkgsz|filtered_filesizeformat}}
    +
    + + License manifest +
    +
    {{target.target.license_manifest_path}}
    +
    + + Image files +
    +
    +
      + {% for i in target.imageFiles %} +
    • {{i.path}} + ({{i.size|filtered_filesizeformat}})
    • + {% endfor %} +
    +
    +
    +
    + {% endif %} + {% endfor %} + {% endif %} +
    + +{%else%} + +{%endif%} + + +
    +

    Build summary

    +
    +

    Configuration

    +
    +
    Machine
    {{build.machine}}
    +
    Distro
    {{build.distro}}
    +
    Layers
    {% for i in build.layer_version_build.all|dictsort:"layer.name" %}
    {{i.layer.name}}
    {%endfor%} +
    +
    +
    +

    Tasks

    +
    +
    Total number of tasks
    {{build.task_build.all.count}}
    +
    + Tasks executed + +
    +
    {% query build.task_build task_executed=1 order__gt=0 as exectask%}{{exectask.count}}
    +
    + Tasks not executed + +
    +
    {% query build.task_build task_executed=0 order__gt=0 as noexectask%}{{noexectask.count}}
    +
    + Reuse + +
    +
    +{% query build.task_build order__gt=0 as texec %} +{% if noexectask.count|multiply:100|divide:texec.count < 0 %} +0 +{% else %} +{{noexectask.count|multiply:100|divide:texec.count}} +{% endif %} +% +
    +
    +
    +
    +

    Recipes & Packages

    +
    +
    Recipes built
    {{recipecount}}
    +
    Packages built
    {{packagecount}}
    +
    +
    +
    + +{% if build.warnings_no %} +
    +
    + +
    +
    +
    + {% for warning in logmessages %}{% if warning.level == 1 %} +
    +
    {{warning.message}}
    +
    + {% endif %}{% endfor %} +
    +
    +
    +
    +
    +{% endif %} + + + +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/buildtime.html b/bitbake/lib/toaster/toastergui/templates/buildtime.html new file mode 100644 index 0000000000..ea84ae797c --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/buildtime.html @@ -0,0 +1,4 @@ +{% extends "basebuildpage.html" %} +{% block localbreadcrumb %} +
  • Build Time
  • +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/configuration.html b/bitbake/lib/toaster/toastergui/templates/configuration.html new file mode 100644 index 0000000000..49a6a89d5c --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/configuration.html @@ -0,0 +1,73 @@ +{% extends "basebuildpage.html" %} +{% load projecttags %} + +{% block localbreadcrumb %} +
  • Configuration
  • +{% endblock %} + +{% block nav-configuration %} +
  • Configuration
  • +{% endblock %} + +{% block buildinfomain %} + +
    + +
    + + +
    + {%if tc.qhelp%}{%endif%} + {%if tc.orderfield%}{{tc.name}}{%else%}{{tc.name}}{%endif%} + {%if tc.ordericon%} {%endif%} + {%if tc.filter%}
    + +
    {%endif%} +
    NameSize (Bytes)
    {{file.path}}{{file.size}}
    {{package.name}}{%if package.version%}{{package.version}}-{{package.revision}}{%endif%}{{package.size|filtered_filesizeformat}}{{package.license}}{{package.recipe.name}}{{package.recipe.version}}{{package.recipe.layer_version.layer.name}}{{package.recipe.layer_version.branch}} + + {{package.recipe.layer_version.commit|truncatechars:13}} + + {{package.recipe.layer_version.layer.local_path}}
    {%if build.outcome == build.SUCCEEDED%}{%elif build.outcome == build.FAILED%}{%else%}{%endif%}{% for t in build.target_set.all %} {{t.target}}
    {% endfor %}
    {{build.machine}}{{build.started_on|date:"d/m/y H:i"}}{{build.completed_on|date:"d/m/y H:i"}}{% query build.task_build outcome=4 order__gt=0 as exectask%}{% if exectask.count == 1 %}{{exectask.0.recipe.name}}.{{exectask.0.task_name}}{% elif exectask.count > 1%}{{exectask.count}}{%endif%}{% if build.errors_no %}{{build.errors_no}} error{{build.errors_no|pluralize}}{%endif%}{% if build.warnings_no %}{{build.warnings_no}} warning{{build.warnings_no|pluralize}}{%endif%}{{build.timespent|sectohms}}{{build.cooker_log_path}} + {% if build.outcome == build.SUCCEEDED %} + {{fstypes|get_dict_value:build.id}} + {% endif %} +
    + + + + + + + + + {% for lv in build.layer_version_build.all|dictsort:"layer.name" %} + + + + + + {% endfor %} + +
    LayerLayer branchLayer commitLayer directory
    {{lv.layer.name}}{{lv.branch}} + {{lv.commit|truncatechars:13}} + {{lv.layer.local_path}}
    + + + + + +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/configvars.html b/bitbake/lib/toaster/toastergui/templates/configvars.html new file mode 100644 index 0000000000..1bd29aac0d --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/configvars.html @@ -0,0 +1,130 @@ +{% extends "basebuildpage.html" %} +{% load projecttags %} + +{% block localbreadcrumb %} +
  • Configuration
  • +{% endblock %} + +{% block nav-configuration %} +
  • Configuration
  • +{% endblock %} + +{% block buildinfomain %} + +
    + +
    + + + + +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/cpuusage.html b/bitbake/lib/toaster/toastergui/templates/cpuusage.html new file mode 100644 index 0000000000..02f07b7605 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/cpuusage.html @@ -0,0 +1,4 @@ +{% extends "basebuildpage.html" %} +{% block localbreadcrumb %} +
  • Cpu Usage
  • +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/dirinfo.html b/bitbake/lib/toaster/toastergui/templates/dirinfo.html new file mode 100644 index 0000000000..749ae242ea --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/dirinfo.html @@ -0,0 +1,237 @@ +{% extends "basebuildpage.html" %} +{% block extraheadcontent %} +{% load static %} + + +{% endblock extraheadcontent %} + +{% block localbreadcrumb %} +
  • {{target.target}}
  • +{% endblock localbreadcrumb%} + +{% block buildinfomain %} + +{% load static %} + +{% load projecttags %} + + + +
    + + + + + +
    + + + + + + + + + + + + + + + +
    Directory / FileSymbolic link toSource packageSizePermissionsOwnerGroup
    +
    +
    + +{% endblock buildinfomain %} + diff --git a/bitbake/lib/toaster/toastergui/templates/diskio.html b/bitbake/lib/toaster/toastergui/templates/diskio.html new file mode 100644 index 0000000000..c5cef6f385 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/diskio.html @@ -0,0 +1,4 @@ +{% extends "basebuildpage.html" %} +{% block localbreadcrumb %} +
  • Disk I/O
  • +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/filtersnippet.html b/bitbake/lib/toaster/toastergui/templates/filtersnippet.html new file mode 100644 index 0000000000..90ffd3de6c --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/filtersnippet.html @@ -0,0 +1,39 @@ +{% load projecttags %} + + + diff --git a/bitbake/lib/toaster/toastergui/templates/layer.html b/bitbake/lib/toaster/toastergui/templates/layer.html new file mode 100644 index 0000000000..410d766c60 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/layer.html @@ -0,0 +1,34 @@ +{% extends "basetable.html" %} + +{% block pagename %} +

    Toaster - Layers

    +{% endblock %} + +{% block pagetable %} + {% load projecttags %} + + + Name + Local Path + Layer Index URL + Known Versions + + + {% for layer in objects %} + + + {{layer.name}} + {{layer.local_path}} + {{layer.layer_index_url}} + + {% for lv in layer.versions %} + + {% endfor %} +
    + ({{lv.priority}}){{lv.branch}}:{{lv.commit}} ({{lv.count}} recipes) +
    + + + {% endfor %} + +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/package.html b/bitbake/lib/toaster/toastergui/templates/package.html new file mode 100644 index 0000000000..1ba372608d --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/package.html @@ -0,0 +1,36 @@ +{% extends "basebuildpage.html" %} + +{% block pagetable %} + {% if not objects %} +

    No packages were recorded for this target!

    + {% else %} + + + Name + Version + Size (Bytes) + Recipe + Depends on + + + {% for package in objects %} + + + {{package.name}} + {{package.version}} + {{package.size}} + {%if package.recipe %} + {{package.recipe.name}}{{package.package_name}}{%endif%} + +
    + {% for d in package.package_dependencies_source.all %} + {{d.depends_on.name}}
    + {% endfor %} +
    + + + {% endfor %} + + {% endif %} + +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html b/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html new file mode 100644 index 0000000000..a0c5a1e4f0 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/package_built_dependencies.html @@ -0,0 +1,99 @@ +{% extends "package_detail_base.html" %} +{% load projecttags %} + +{% block tabcontent %} + +
    +
    + {% ifequal runtime_deps|length 0 %} +
    + {{package.fullpackagespec}} has no runtime dependencies. +
    + {% else %} +
    + {{package.fullpackagespec}} is not included in any image. This page shows you the projected runtime dependencies if you include {{package.fullpackagespec}} in future builds. +
    + + + + + + + + + + {% for runtime_dep in runtime_deps %} + + {% if runtime_dep.size != -1 %} + + {% else %} + + {% endif %} + + + + {% endfor %} + +
    PackageVersionSize
    + + {{runtime_dep.name}} + + + {{runtime_dep.name|format_vpackage_namehelp}} + {{runtime_dep.version}}{{runtime_dep.size|filtered_filesizeformat}}
    + {% endifequal %} + {% ifnotequal other_deps|length 0 %} +

    Other runtime relationships

    + + + + + + + + + + + {% for other_dep in other_deps %} + + {% if other_dep.size != -1 %} + + {% else %} + + {% endif %} + + + + + {% endfor %} + +
    PackageVersionSize + + Relationship type +
    + + {{other_dep.name}} + + + {{other_dep.name|format_vpackage_namehelp}} + {{other_dep.version}}{{other_dep.size|filtered_filesizeformat}} + {{other_dep.dep_type_display}} + +
    + {% endifnotequal %} +
    +
    +{% endblock tabcontent %} diff --git a/bitbake/lib/toaster/toastergui/templates/package_built_detail.html b/bitbake/lib/toaster/toastergui/templates/package_built_detail.html new file mode 100644 index 0000000000..0fe01165da --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/package_built_detail.html @@ -0,0 +1,65 @@ +{% extends "package_detail_base.html" %} +{% load projecttags %} + +{% block tabcontent %} + {% with packageFileCount=package.buildfilelist_package.count %} + + {% if package.buildtargetlist_package.count == 0 %} + {# Not included case #} + +
    +
    + + {% if packageFileCount > 0 %} +
    + {{package.fullpackagespec}} is not included in any image. This page shows you the files added to an image root file system if you include {{package.fullpackagespec}} in future builds. +
    + {% include "tablesort.html" %} + + {% for file in objects %} + + {{file.path}} + {{file.size|filtered_filesizeformat}} + + {% endfor %} + + + + {% else %} +
    + {{package.fullpackagespec}} does not generate any files. +
    + {% endif %} + +
    +
    + {% else %} + {# Included case #} +
    +
    +
    + Package included in: + {% for itarget in package.buildtargetlist_package.all|dictsort:"target.target" %} + + {% if forloop.counter0 > 0 %} + ,  + {% endif %} + {{itarget.target.target}} + + {% endfor %} +
    +
    +
    + {% endif %} + + {% endwith %} +{% endblock tabcontent %} diff --git a/bitbake/lib/toaster/toastergui/templates/package_detail_base.html b/bitbake/lib/toaster/toastergui/templates/package_detail_base.html new file mode 100644 index 0000000000..5888513486 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/package_detail_base.html @@ -0,0 +1,145 @@ +{% extends "basebuilddetailpage.html" %} +{% load projecttags %} + +{% block extraheadcontent %} + + +{% endblock extraheadcontent %} +{% block localbreadcrumb %} + {% if target %} +
  • {{target.target}}
  • +
  • {{package.fullpackagespec}} {% if package.alias %} as {{package.alias}}{% endif %}
  • + {% else %} +
  • Packages
  • +
  • {{package.fullpackagespec}}
  • + {% endif %} +{% endblock localbreadcrumb %} + +{% block pagedetailinfomain %} +
    + +
    + + {% block twocolumns %} +
    + {% block tabcontent %} + {% endblock tabcontent %} +
    + +
    +

    Package information

    + + +
    +
    + Size + +
    +
    + {% comment %} + if recipe is absent, filesize is not 0 + {% endcomment %} + {% if package.recipe_id > 0 %} + {{package.size|filtered_filesizeformat}} + {% if target.file_size %} + ({{package.size|multiply:100|divide:target.file_size}}% of included package size) + {% endif %} + + {% endif %} +
    + +
    + License + +
    +
    {{package.license}}
    + + {% comment %} + # Removed per review on 1/18/2014 until license data population + # problemse are resolved. +
    + License files + +
    +
    + {% endcomment %} + +
    + Recipe + +
    +
    + {% if package.recipe_id > 0 %} + {{package.recipe.name}} + {% else %} + {{package.recipe.name}} + {% endif %} +
    + +
    + Recipe version + +
    +
    {{package.recipe.version}}
    + +
    + Layer + +
    +
    + {{package.recipe.layer_version.layer.name}} + {% if package.recipe.layer_version.layer.name|format_none_and_zero != "" %} + {% comment %} + # Removed per team meeting of 1/29/2014 until + # decision on index search algorithm + + + + {% endcomment %} + {% endif %} +
    + +
    + Layer branch + +
    +
    {{package.recipe.layer_version.branch}}
    +
    + Layer commit + +
    + +
    {{package.recipe.layer_version.commit}}
    +
    + Layer directory + +
    +
    {{package.recipe.layer_version.layer.local_path}}
    +
    +
    + {% endblock twocolumns %} +{% endblock pagedetailinfomain %} diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html b/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html new file mode 100644 index 0000000000..642ca69568 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/package_included_dependencies.html @@ -0,0 +1,110 @@ +{% extends "package_detail_base.html" %} +{% load projecttags %} + +{% block title %} +

    + {{package.fullpackagespec}} + + ({{target.target}}) +

    +{% endblock title %} + +{% block tabcontent %} + {% with packageFileCount=package.buildfilelist_package.count %} + {% include "package_included_tabs.html" with active_tab="dependencies" %} +
    +
    + {% ifnotequal runtime_deps|length 0 %} + + + + + + + + + + {% for runtime_dep in runtime_deps %} + + {% if runtime_dep.size != -1 %} + + {% else %} + + {% endif %} + + + + {% endfor %} + +
    PackageVersionSize
    + + {{runtime_dep.name}} + + + + {{runtime_dep.name|format_vpackage_namehelp}} + {{runtime_dep.version}} {{runtime_dep.size|filtered_filesizeformat}} 
    + {% else %} +
    + {{package.fullpackagespec}} has no runtime dependencies. +
    + {% endifnotequal %} + + {% ifnotequal other_deps|length 0 %} +

    Other runtime relationships

    + + + + + + + + + + + {% for other_dep in other_deps %} + {% if other_dep.installed %} + + {% if other_dep.size != -1 %} + + {% else %} + + {% endif %} + + + + + {% else %} + + + + + + + {% endif %} + {% endfor %} + +
    PackageVersionSize + + Relationship type +
    + + {{other_dep.name}} + + + + {{other_dep.name|format_vpackage_namehelp}} + {{other_dep.version}} {{other_dep.size|filtered_filesizeformat}}  + {{other_dep.dep_type_display}} + +
    {{other_dep.name}}{{other_dep.version}} + {{other_dep.dep_type_display}} + +
    + {% endifnotequal %} +
    +
    + {% endwith %} +{% endblock tabcontent %} diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_detail.html b/bitbake/lib/toaster/toastergui/templates/package_included_detail.html new file mode 100644 index 0000000000..d2aa26eefa --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/package_included_detail.html @@ -0,0 +1,44 @@ +{% extends "package_detail_base.html" %} +{% load projecttags %} + +{% block title %} +

    + {{package.fullpackagespec}} + + ({{target.target}}) +

    +{% endblock title %} + +{% block tabcontent %} +{% with packageFileCount=package.buildfilelist_package.count %} + {% include "package_included_tabs.html" with active_tab="detail" %} +
    +
    + {% if packageFileCount > 0 %} + {% include "tablesort.html" %} + + {% for file in objects %} + + + + {{file.path}} + + + {{file.size|filtered_filesizeformat}} + + {% endfor %} + + + + {% else %} +
    + {{package.fullpackagespec}} does not generate any files. +
    + {% endif %} +
    +
    + +{% endwith %} +{% endblock tabcontent %} diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html b/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html new file mode 100644 index 0000000000..a36464cad5 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/package_included_reverse_dependencies.html @@ -0,0 +1,50 @@ +{% extends "package_detail_base.html" %} +{% load projecttags %} + +{% block title %} +

    + {{package.fullpackagespec}} + + ({{target.target}}) +

    +{% endblock title %} + +{% block tabcontent %} + {% with packageFileCount=package.buildfilelist_package.count %} + {% include "package_included_tabs.html" with active_tab="reverse" %} +
    +
    + + {% ifequal reverse_deps|length 0 %} +
    + {{package.fullpackagespec}} has no reverse runtime dependencies. +
    + {% else %} + {% include "tablesort.html" %} + + {% for reverse_dep in objects %} + + {% if reverse_dep.size != -1 %} + + + {{reverse_dep.package.name}} + + + + {% else %} + + {{reverse_dep.name|format_vpackage_namehelp}} + + {% endif %} + + {{reverse_dep.package.version}}  + {{reverse_dep.package.size|filtered_filesizeformat}}  + + {% endfor %} + + + {% endifequal %} +
    +
    + {% endwith %} +{% endblock tabcontent %} diff --git a/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html b/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html new file mode 100644 index 0000000000..0140b03c05 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/package_included_tabs.html @@ -0,0 +1,33 @@ + + diff --git a/bitbake/lib/toaster/toastergui/templates/recipe.html b/bitbake/lib/toaster/toastergui/templates/recipe.html new file mode 100644 index 0000000000..6e9cd23424 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/recipe.html @@ -0,0 +1,273 @@ +{% extends "basebuilddetailpage.html" %} + +{% load projecttags %} + +{% block localbreadcrumb %} +
  • Recipes
  • +
  • {{object.name}}_{{object.version}}
  • +{% endblock %} + +{% block pagedetailinfomain %} + + + +
    + +
    + +
    + +
    +
    +
    +
    + + Layer +
    +
    {{layer.name}}
    +
    + + Layer directory +
    +
    {{layer.local_path}}
    +
    + + Recipe file +
    +
    {{object.file_path}}
    +
    + + Layer branch +
    +
    {{layer_version.branch}}
    +
    + + Layer commit +
    +
    {{layer_version.commit}}
    +
    + +

    Tasks

    + {% if not tasks %} +
    + {{object.name}}_{{object.version}} does not have any tasks in this build. +
    + {% else %} + + + + + + + + + + + {% for task in tasks %} + + + + + + + + + + + + + + {% endfor %} + +
    + + Order + + + Task + + + Executed + + + Outcome + + + Cache attempt +
    {{task.order}} + {{task.task_name}} + {% if task.get_description %} {% endif %} + {{task.get_executed_display}} + {{task.get_outcome_display}} + + + {% ifnotequal task.sstate_result task.SSTATE_NA %} + {{task.get_sstate_result_display}} + {% endifnotequal %} +
    + {% endif %} +
    +
    + {% if not packages %} +
    + {{object.name}}_{{object.version}} does not build any packages. +
    + {% else %} + + + + + + + + + + + {% for package in packages|dictsort:"name" %} + + + + + + + + {% endfor %} + + +
    + Package + + Version + + Size +
    {{package.name}}{{package.version}}_{{package.revision}}{{package.size|filtered_filesizeformat}}
    + {% endif %} +
    +
    + + {% if not object.r_dependencies_recipe.all %} +
    + {{object.name}}_{{object.version}} has no build dependencies. +
    + {% else %} + + + + + + + + + + {% for rr in object.r_dependencies_recipe.all|dictsort:"depends_on.name" %} + + + + + {% endfor %} + + +
    + Recipe + + Version +
    {{rr.depends_on.name}}{{rr.depends_on.version}}
    + {% endif %} + +
    +
    + + {% if not object.r_dependencies_depends.all %} +
    + {{object.name}}_{{object.version}} has no reverse build dependencies. +
    + {% else %} + + + + + + + + + + {% for rr in object.r_dependencies_depends.all|dictsort:"recipe.name" %} + + + + + {% endfor %} + + +
    + Recipe + + Version +
    {{rr.recipe.name}}{{rr.recipe.version}}
    + {% endif %} + +
    +
    +
    + +
    +

    About {{object.name}}

    +
    + {% if object.summary %} +
    Summary
    +

    {{object.summary}}

    + {% endif %} + {% if object.description %} +
    Description
    +

    {{object.description}}

    + {% endif %} + {% if object.homepage %} +
    Homepage
    +
    {{object.homepage}}
    + {% endif %} + {% if object.bugtracker %} +
    Bugtracker
    +
    {{object.bugtracker}}
    + {% endif %} + {% if object.section %} +
    + Section + +
    +
    {{object.section}}
    + {% endif %} + {% if object.license %} +
    License
    +
    {{object.license}}
    + {% endif %} +
    +
    + +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/recipes.html b/bitbake/lib/toaster/toastergui/templates/recipes.html new file mode 100755 index 0000000000..907b83d269 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/recipes.html @@ -0,0 +1,102 @@ +{% extends "basebuildpage.html" %} + +{% load projecttags %} + +{% block localbreadcrumb %} +
  • Recipes
  • +{% endblock %} + +{% block nav-recipes %} +
  • Recipes
  • +{% endblock %} + +{% block buildinfomain %} +
    + + +{% if objects.paginator.count == 0 %} +
    +
    +
    + {% if request.GET.search %}{% endif %} + + +
    +
    +
    + +{% else %} +{% include "basetable_top.html" %} + + {% for recipe in objects %} + + + {{recipe.name}} + {{recipe.version}} + + + {% if recipe.r_dependencies_recipe.all.count %} + {{recipe.name}} dependencies" + data-content="
      + {% for i in recipe.r_dependencies_recipe.all|dictsort:"depends_on.name"%} +
    • {{i.depends_on.name}}
    • + {% endfor %} +
    "> + {{recipe.r_dependencies_recipe.all.count}} + + {% endif %} + + + + {% if recipe.r_dependencies_depends.all.count %} + {{recipe.name}} reverse dependencies" + data-content="
      + {% for i in recipe.r_dependencies_depends.all|dictsort:"recipe.name"%} +
    • {{i.recipe.name}}
    • + {% endfor %} +
    "> + {{recipe.r_dependencies_depends.all.count}} + + {% endif %} + + + {{recipe.file_path}} + + {{recipe.section}} + + {{recipe.license}} + + {{recipe.layer_version.layer.name}} + + {{recipe.layer_version.branch}} + + + + {{recipe.layer_version.commit|truncatechars:13}} + + + + {{recipe.layer_version.layer.local_path}} + + + {% endfor %} + +{% include "basetable_bottom.html" %} +{% endif %} +
    +{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/templates/tablesort.html b/bitbake/lib/toaster/toastergui/templates/tablesort.html new file mode 100644 index 0000000000..bf311b6edd --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/tablesort.html @@ -0,0 +1,38 @@ +{% load projecttags %} + + {% if disable_sort %} + + + + {% for tc in tablecols %} + + {% endfor %} + + + {% else %} +
    + {%if tc.qhelp%}{%endif%} + {{tc.name}} +
    + + + + {% for tc in tablecols %} + + {% endfor %} + + + {% endif %} diff --git a/bitbake/lib/toaster/toastergui/templates/target.html b/bitbake/lib/toaster/toastergui/templates/target.html new file mode 100644 index 0000000000..3a0c4d7998 --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/target.html @@ -0,0 +1,163 @@ +{% extends "basebuildpage.html" %} +{% block localbreadcrumb %} +
  • {{target.target}}
  • +{% endblock localbreadcrumb%} + +{% load projecttags %} + +{% block nav-target %} + {% for t in build.get_sorted_target_list %} + {% ifequal target.pk t.pk %} +
  • {{t.target}}
  • + {% else %} +
  • {{t.target}}
  • + {% endifequal %} + {% endfor %} +{% endblock %} + +{% block buildinfomain %} + +
    + +
    + +
  • + + + + + + + + + + + + + + + {% endfor %} + + {% include "basetable_bottom.html" %} + {% endif %} + + +{% endblock buildinfomain %} diff --git a/bitbake/lib/toaster/toastergui/templates/task.html b/bitbake/lib/toaster/toastergui/templates/task.html new file mode 100644 index 0000000000..455599932c --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/task.html @@ -0,0 +1,283 @@ +{% extends "basebuilddetailpage.html" %} + +{% load projecttags %} +{% load humanize %} + +{% block localbreadcrumb %} +
  • Tasks
  • +
  • {{task.recipe.name}}_{{task.recipe.version}} {{task.task_name}}
  • +{% endblock %} + +{% block pagedetailinfomain %} + +
    + + +{# Outcome section #} +

    + {{task.get_outcome_display}} + +

    +{%if task.task_executed %} + {# executed tasks outcome #} +
    + {% if task.logfile %} +
    + Log file +
    +
    + {{task.logfile}} +
    + {% endif %} + {# show stack trace for failed task #} + {% if task.outcome == task.OUTCOME_FAILED and log_head %} +

    Python stack trace

    +
    +
    +                    {{log_head}}...
    +                    
    + {{log_body}}
    +
    + {% endif %} +
    +{% else %} +{# not executed tasks outcome #} + {% if task.outcome == task.OUTCOME_PREBUILT %} + {% if not showing_matches %} + Match to tasks in previous builds + {% elif matching_tasks %} +

    Prebuilt task could be based on + +

    +
    + {%if tc.qhelp%}{%endif%} + {%if tc.orderfield%} + + {{tc.name}} + + {%else%} + + {{tc.name}} + + {%endif%} + {%if tc.ordericon%} {%endif%} +
    + + {{package.name}} + + {% if package.installed_name and package.name != package.installed_name %} + as {{package.installed_name}} + + {% endif %} + + + {{package.version|filtered_packageversion:package.revision}} + + + {{package.size|filtered_installedsize:package.installed_size|filtered_filesizeformat}} + + {{package|filter_sizeovertotal:packages_sum}} + + {{package.license}} + + {% with deps=package.runtime_dependencies %} + {% with deps_count=deps|length %} + {% if deps_count > 0 %} + {{package.name}} dependencies" + data-content=""> + {{deps_count}} + + {% endif %} + {% endwith %} + {% endwith %} + + {% with rdeps=package.reverse_runtime_dependencies %} + {% with rdeps_count=rdeps|length %} + {% if rdeps_count > 0 %} + {{package.name}} reverse dependencies" + data-content=""> + {{rdeps_count}} + + {% endif %} + {% endwith %} + {% endwith %} + + {% if package.recipe.version %} + + {{ package.recipe.name }} + + {% endif %} + + {% if package.recipe.version %} + + {{ package.recipe.version }} + + {% endif %} + + {{ package.recipe.layer_version.layer.name }} + + {{ package.recipe.layer_version.branch}} + + + {{package.recipe.layer_version.commit|truncatechars:13}} + + + {{ package.recipe.layer_version.layer.local_path }} +
    + + + + + + + + + {% for match in matching_tasks %} + + + + + + + + {% endfor %} + +
    + + Recipe + + + Task + + + Executed + + + Outcome + + + Build completed on +
    + {{match.recipe.name}} + + {{match.task_name}} + + {{match.get_executed_display}} + + {{match.get_outcome_display}} + + {{match.build.completed_on|date:"d/m/y H:i"}} +
    + {% else %} +

    + We have found no tasks matching this prebuilt task
    + The task you are looking for could belong to a build for which Toaster has no data. +

    + {% endif %} + {% elif task.outcome == task.OUTCOME_COVERED %} +
    +
    + Task covered by +
    +
    + +
    +
    + {%elif task.outcome == task.OUTCOME_CACHED%} +
    +
    + Log file +
    +
    + {% for t in task.get_related_setscene %} {{t.logfile}} {% endfor %} +
    +
    + {%elif task.outcome == task.OUTCOME_EMPTY%} +
    + This task is empty because it has the noexec flag set to 1, or the task function is empty +
    + {% endif %} +{% endif %} + +{# Execution section #} + {% if task.task_executed %} +

    + Executed + + {% else %} +

    + Not Executed + + {% endif %} +

    +
    +
    + + Task inputs signature +
    +
    + {{task.sstate_checksum}} +
    + {% if task.sstate_result != task.SSTATE_NA %} +
    +
    Attempting to restore output from sstate cache + +
    +
    +
    + + File searched for +
    +
    {{task.path_to_sstate_obj}}
    +
    + + URI(s) searched +
    +
      {% for uri in uri_list %}
    • {{uri}}
    • {% endfor %}
    +
    + {% endif %} + {% if task.sstate_result == task.SSTATE_MISS %} +
    + File not in sstate cache. Running the real task instead. +
    + {% elif task.sstate_result == task.SSTATE_FAILED%} +
    + Failed to restore output from sstate cache. The file was found but could not be unpacked. +
    +
    +
    + + Log file +
    +
    {{task.logfile}}
    +
    + + Time (secs) +
    +
    {{task.elapsed_time|format_none_and_zero}}
    +
    +
    + Running the real task instead. +
    + {% elif task.sstate_result == task.SSTATE_RESTORED %} +
    + Output successfully restored from sstate cache. +
    + {% endif %} +
    +
    + + Task order +
    +
    {{task.order}}
    + {% if task.task_executed %} +
    + + Task script type +
    +
    {{task.get_script_type_display}}
    + {% endif %} + +
    + + Dependencies +
    +
    + +
    +
    + + Reverse dependencies +
    +
    + +
    + +{# Performance section - shown only for executed tasks #} +{%if task.elapsed_time or task.cpu_usage or task.disk_io %} +

    Performance

    +{% endif %} +
    + {% if task.elapsed_time %} +
    + + Time (secs) +
    +
    {{task.elapsed_time|format_none_and_zero|floatformat:2}}
    + {% endif %} + {% if task.cpu_usage > 0 %} +
    + + CPU usage +
    +
    {{task.cpu_usage|format_none_and_zero|floatformat:2}}%
    + {% endif %} + {% if task.disk_io > 0 %} +
    + + Disk I/O (ms) +
    +
    {{task.disk_io|format_none_and_zero}}
    + {% endif %} +
    + + +{% endblock %} + diff --git a/bitbake/lib/toaster/toastergui/templates/tasks.html b/bitbake/lib/toaster/toastergui/templates/tasks.html new file mode 100644 index 0000000000..77d38b00de --- /dev/null +++ b/bitbake/lib/toaster/toastergui/templates/tasks.html @@ -0,0 +1,133 @@ +{% extends "basebuildpage.html" %} +{% load projecttags %} + +{% block localbreadcrumb %} +
  • {{title}}
  • +{% endblock %} + +{% block nav-tasks %} + {% if 'Tasks' == title %} +
  • Tasks
  • + {% else %} +
  • Tasks
  • + {% endif %} +{% endblock %} +{% block nav-buildtime %} + {% if 'Time' == title %} +
  • Time
  • + {% else %} +
  • Time
  • + {% endif %} +{% endblock %} +{% block nav-cpuusage %} + {% if 'CPU usage' == title %} +
  • CPU usage
  • + {% else %} +
  • CPU usage
  • + {% endif %} +{% endblock %} +{% block nav-diskio %} + {% if 'Disk I/O' == title %} +
  • Disk I/O
  • + {% else %} +
  • Disk I/O
  • + {% endif %} +{% endblock %} + +{% block buildinfomain %} +
    +{% if not request.GET.filter and not request.GET.search and not objects.paginator.count %} + + +
    + No data was recorded for this build. +
    + +{% else %} + + + + {% if objects.paginator.count == 0 %} +
    +
    +
    + {% if request.GET.search %}{% endif %} + + +
    +
    +
    + + + {% else %} + {% include "basetable_top.html" %} + + {% for task in objects %} + + + {{task.order}} + + + {{task.recipe.name}} + + + {{task.recipe.version}} + + + {{task.task_name}} {% if task.get_description %} {% endif %} + + + {{task.get_executed_display}} + + + {{task.get_outcome_display}} + + + + {{task.get_sstate_result_display|format_none_and_zero}} + + + {{task.elapsed_time|format_none_and_zero|floatformat:2}} + + + {{task.cpu_usage|format_none_and_zero|floatformat:2}}{% if task.cpu_usage %}%{% endif %} + + + {{task.disk_io|format_none_and_zero}} + + + {{task.logfile}} + + + {% endfor %} + + {% include "basetable_bottom.html" %} + {% endif %} {# objects.paginator.count #} +{% endif %} {# empty #} +
    + + + +{% endblock %} -- cgit v1.2.3-54-g00ecf