From 32d1e2dd25f288790450db48766cf115854712ba Mon Sep 17 00:00:00 2001 From: Michael Wood Date: Thu, 26 May 2016 16:12:21 +0100 Subject: bitbake: toaster: port Built recipes table to toastertables (Bitbake rev: 9434d3925bb7768876aae8d649ea00b8d849c6e9) Signed-off-by: Michael Wood Signed-off-by: Richard Purdie --- bitbake/lib/toaster/toastergui/buildtables.py | 129 +++++++++++++++++++++ .../lib/toaster/toastergui/templates/recipes.html | 111 ------------------ bitbake/lib/toaster/toastergui/urls.py | 7 +- bitbake/lib/toaster/toastergui/views.py | 111 ------------------ 4 files changed, 135 insertions(+), 223 deletions(-) delete mode 100644 bitbake/lib/toaster/toastergui/templates/recipes.html (limited to 'bitbake') diff --git a/bitbake/lib/toaster/toastergui/buildtables.py b/bitbake/lib/toaster/toastergui/buildtables.py index cf07ea8789..dc742b9fe5 100644 --- a/bitbake/lib/toaster/toastergui/buildtables.py +++ b/bitbake/lib/toaster/toastergui/buildtables.py @@ -150,3 +150,132 @@ class BuiltPackagesTable(BuildTablesMixin, BuiltPackagesTableBase): yield column self.columns = list(remove_dep_cols(self.columns)) + + +class BuiltRecipesTable(BuildTablesMixin): + """ Table to show the recipes that have been built in this build """ + + def __init__(self, *args, **kwargs): + super(BuiltRecipesTable, self).__init__(*args, **kwargs) + self.title = "Recipes built" + self.default_orderby = "name" + + def setup_queryset(self, *args, **kwargs): + build = Build.objects.get(pk=kwargs['build_id']) + self.static_context_extra['build'] = build + self.queryset = build.get_recipes() + self.queryset = self.queryset.order_by(self.default_orderby) + + def setup_columns(self, *args, **kwargs): + recipe_name_tmpl =\ + ''\ + '{{data.name}}'\ + '' + + recipe_version_tmpl =\ + ''\ + '{{data.version}}'\ + '' + + recipe_file_tmpl =\ + '{{data.file_path}}'\ + '{% if data.pathflags %}({{data.pathflags}})'\ + '{% endif %}' + + git_rev_template = ''' + {% with vcs_ref=data.layer_version.commit %} + {% include 'snippets/gitrev_popover.html' %} + {% endwith %} + ''' + + depends_on_tmpl = ''' + {% with deps=data.r_dependencies_recipe.all %} + {% with count=deps|length %} + {% if count %} + + {{data.name}} dependencies" + data-content=""> + {{count}} + + {% endif %}{% endwith %}{% endwith %} + ''' + + rev_depends_tmpl = ''' + {% with revs=data.r_dependencies_depends.all %} + {% with count=revs|length %} + {% if count %} + + {{data.name}} reverse dependencies" + data-content=""> + {{count}} + + {% endif %}{% endwith %}{% endwith %} + ''' + + self.add_column(title="Name", + field_name="name", + static_data_name='name', + orderable=True, + static_data_template=recipe_name_tmpl) + + self.add_column(title="Version", + field_name="version", + static_data_name='version', + static_data_template=recipe_version_tmpl) + + self.add_column(title="Dependencies", + static_data_name="dependencies", + static_data_template=depends_on_tmpl, + hidden=True) + + self.add_column(title="Reverse dependencies", + static_data_name="revdeps", + static_data_template=rev_depends_tmpl, + help_text='Recipe build-time reverse dependencies' + ' (i.e. the recipes that depend on this recipe)', + hidden=True) + + self.add_column(title="Recipe file", + field_name="file_path", + static_data_name="file_path", + static_data_template=recipe_file_tmpl) + + self.add_column(title="Section", + field_name="section", + orderable=True) + + self.add_column(title="License", + field_name="license", + help_text='Multiple license names separated by the' + ' pipe character indicates a choice between licenses.' + ' Multiple license names separated by the ampersand' + ' character indicates multiple licenses exist that' + ' cover different parts of the source', + orderable=True) + + self.add_column(title="Layer", + field_name="layer_version__layer__name", + orderable=True) + + self.add_column(title="Layer branch", + field_name="layer_version__branch", + orderable=True) + + self.add_column(title="Layer commit", + static_data_name="commit", + static_data_template=git_rev_template) diff --git a/bitbake/lib/toaster/toastergui/templates/recipes.html b/bitbake/lib/toaster/toastergui/templates/recipes.html deleted file mode 100644 index fe06f8b205..0000000000 --- a/bitbake/lib/toaster/toastergui/templates/recipes.html +++ /dev/null @@ -1,111 +0,0 @@ -{% extends "basebuildpage.html" %} - -{% load projecttags %} - -{% block title %} Recipes - {{build.target_set.all|dictsort:"target"|join:", "}} {{build.machine}} - {{build.project.name}} - Toaster {% endblock %} -{% 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}} - - - - {% with deps=recipe_deps|get_dict_value:recipe.pk %} - {% with count=deps|length %} - {% if count %} - {{recipe.name}} dependencies" - data-content=""> - {{count}} - - {% endif %} - {% endwith %} - {% endwith %} - - - - {% with revs=recipe_revs|get_dict_value:recipe.pk %} - {% with count=revs|length %} - {% if count %} - {{recipe.name}} reverse dependencies" - data-content=""> - {{count}} - - {% endif %} - {% endwith %} - {% endwith %} - - - {{recipe.file_path}} {% if recipe.pathflags %}({{recipe.pathflags}}){% endif %} - - {{recipe.section}} - - {{recipe.license}} - - {{recipe.layer_version.layer.name}} - - {{recipe.layer_version.branch}} - - - - {{recipe.layer_version.commit|truncatechars:13}} - - - - - {% endfor %} - -{% include "basetable_bottom.html" %} -{% endif %} -
    -{% endblock %} diff --git a/bitbake/lib/toaster/toastergui/urls.py b/bitbake/lib/toaster/toastergui/urls.py index 3ce0d51011..0636c956b2 100644 --- a/bitbake/lib/toaster/toastergui/urls.py +++ b/bitbake/lib/toaster/toastergui/urls.py @@ -40,8 +40,13 @@ urlpatterns = patterns('toastergui.views', url(r'^build/(?P\d+)/tasks/(?P\d+)/$', 'tasks_task', name='tasks_task'), url(r'^build/(?P\d+)/task/(?P\d+)$', 'task', name='task'), - url(r'^build/(?P\d+)/recipes/$', 'recipes', name='recipes'), + url(r'^build/(?P\d+)/recipes/$', + buildtables.BuiltRecipesTable.as_view( + template_name="buildinfo-toastertable.html"), + name='recipes'), + url(r'^build/(?P\d+)/recipe/(?P\d+)/active_tab/(?P\d{1})$', 'recipe', name='recipe'), + url(r'^build/(?P\d+)/recipe/(?P\d+)$', 'recipe', name='recipe'), url(r'^build/(?P\d+)/recipe_packages/(?P\d+)$', 'recipe_packages', name='recipe_packages'), diff --git a/bitbake/lib/toaster/toastergui/views.py b/bitbake/lib/toaster/toastergui/views.py index de1e4139a1..3a25d5ea1e 100755 --- a/bitbake/lib/toaster/toastergui/views.py +++ b/bitbake/lib/toaster/toastergui/views.py @@ -1274,117 +1274,6 @@ def diskio(request, build_id): def cputime(request, build_id): return tasks_common(request, build_id, 'cputime', '') -def recipes(request, build_id): - template = 'recipes.html' - (pagesize, orderby) = _get_parameters_values(request, 100, 'name:+') - mandatory_parameters = { 'count': pagesize, 'page' : 1, 'orderby' : orderby } - retval = _verify_parameters( request.GET, mandatory_parameters ) - if retval: - return _redirect_parameters( 'recipes', request.GET, mandatory_parameters, build_id = build_id) - (filter_string, search_term, ordering_string) = _search_tuple(request, Recipe) - - build = Build.objects.get(pk=build_id) - - queryset = build.get_recipes() - queryset = _get_queryset(Recipe, queryset, filter_string, search_term, ordering_string, 'name') - - recipes = _build_page_range(Paginator(queryset, pagesize),request.GET.get('page', 1)) - - # prefetch the forward and reverse recipe dependencies - deps = { } - revs = { } - queryset_dependency=Recipe_Dependency.objects.filter(recipe__layer_version__build_id = build_id).select_related("depends_on", "recipe") - for recipe in recipes: - deplist = [ ] - for recipe_dep in [x for x in queryset_dependency if x.recipe_id == recipe.id]: - deplist.append(recipe_dep) - deps[recipe.id] = deplist - revlist = [ ] - for recipe_dep in [x for x in queryset_dependency if x.depends_on_id == recipe.id]: - revlist.append(recipe_dep) - revs[recipe.id] = revlist - - context = { - 'objectname': 'recipes', - 'build': build, - 'project': build.project, - 'objects': recipes, - 'default_orderby' : 'name:+', - 'recipe_deps' : deps, - 'recipe_revs' : revs, - 'tablecols':[ - { - 'name':'Recipe', - 'qhelp':'Information about a single piece of software, including where to download the source, configuration options, how to compile the source files and how to package the compiled output', - 'orderfield': _get_toggle_order(request, "name"), - 'ordericon':_get_toggle_order_icon(request, "name"), - }, - { - 'name':'Recipe version', - 'qhelp':'The recipe version and revision', - }, - { - 'name':'Dependencies', - 'qhelp':'Recipe build-time dependencies (i.e. other recipes)', - 'clclass': 'depends_on', 'hidden': 1, - }, - { - 'name':'Reverse dependencies', - 'qhelp':'Recipe build-time reverse dependencies (i.e. the recipes that depend on this recipe)', - 'clclass': 'depends_by', 'hidden': 1, - }, - { - 'name':'Recipe file', - 'qhelp':'Path to the recipe .bb file', - 'orderfield': _get_toggle_order(request, "file_path"), - 'ordericon':_get_toggle_order_icon(request, "file_path"), - 'orderkey' : 'file_path', - 'clclass': 'recipe_file', 'hidden': 0, - }, - { - 'name':'Section', - 'qhelp':'The section in which recipes should be categorized', - 'orderfield': _get_toggle_order(request, "section"), - 'ordericon':_get_toggle_order_icon(request, "section"), - 'orderkey' : 'section', - 'clclass': 'recipe_section', 'hidden': 0, - }, - { - 'name':'License', - 'qhelp':'The list of source licenses for the recipe. Multiple license names separated by the pipe character indicates a choice between licenses. Multiple license names separated by the ampersand character indicates multiple licenses exist that cover different parts of the source', - 'orderfield': _get_toggle_order(request, "license"), - 'ordericon':_get_toggle_order_icon(request, "license"), - 'orderkey' : 'license', - 'clclass': 'recipe_license', 'hidden': 0, - }, - { - 'name':'Layer', - 'qhelp':'The name of the layer providing the recipe', - 'orderfield': _get_toggle_order(request, "layer_version__layer__name"), - 'ordericon':_get_toggle_order_icon(request, "layer_version__layer__name"), - 'orderkey' : 'layer_version__layer__name', - 'clclass': 'layer_version__layer__name', 'hidden': 0, - }, - { - 'name':'Layer branch', - 'qhelp':'The Git branch of the layer providing the recipe', - 'orderfield': _get_toggle_order(request, "layer_version__branch"), - 'ordericon':_get_toggle_order_icon(request, "layer_version__branch"), - 'orderkey' : 'layer_version__branch', - 'clclass': 'layer_version__branch', 'hidden': 1, - }, - { - 'name':'Layer commit', - 'qhelp':'The Git commit of the layer providing the recipe', - 'clclass': 'layer_version__layer__commit', 'hidden': 1, - }, - ] - } - - response = render(request, template, context) - _set_parameters_values(pagesize, orderby, request) - return response - def configuration(request, build_id): template = 'configuration.html' -- cgit v1.2.3-54-g00ecf