Skip to contentSkip to conversation

Prevent removal of all columns on tasks and recipe tables

PATCH New Ed Bartosh 1 participant 4 messages Jul 21, 2016

lore
Share & tools
lore

Ed Bartosh

author
#0 lore raw

cover Prevent removal of all columns on tasks and recipe tables

All of the columns for the tasks and recipes tables (sub-pages of the build-dashboard) are optional. This means you can remove all the columns for those tables and make them disappear from the page.

Set the non-hideable columns and add some UI tests to check that those columns are disabled in the edit columns drop-down.

The following changes since commit 0bf1a5a6c8d731a0f4f75091621dc999ee6d5ce1:

toaster: fix download URL for task logs (2016-07-20 17:05:57 +0300)

are available in the git repository at:

git://git.yoctoproject.org/poky-contrib ed/submit/elliot/toaster/9833-remove_columns
http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=ed/submit/elliot/toaster/9833-remove_columns

Elliot Smith (3):
toaster: set non-hideable columns for build tasks table
toaster: set non-hideable columns for built recipes table
toaster-tests: add tasks and recipes sub-page tests

 .../browser/test_builddashboard_page_recipes.py    | 66 ++++++++++++++++++++++
 .../browser/test_builddashboard_page_tasks.py      | 65 +++++++++++++++++++++
 bitbake/lib/toaster/toastergui/buildtables.py      |  7 ++-
 3 files changed, 137 insertions(+), 1 deletion(-)
 create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py
 create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py

--
Regards,
Ed

author
#1 lore raw

PATCH 1/3 toaster: set non-hideable columns for build tasks table

From: Elliot Smith <[email protected]>

The task, recipe and order columns in the build tasks table should not be hideable. If they are, it's possible for the table to have all of its columns hidden so that it no longer displays.

Set the hideable property to prevent these columns from being hidden.

[YOCTO #9833]

---
 bitbake/lib/toaster/toastergui/buildtables.py | 3 +++
 1 file changed, 3 insertions(+)
bitbake/lib/toaster/toastergui/buildtables.py +3 -0
index f3d7236..f845c66 100644
@@ -431,17 +431,20 @@ class BuildTasksTable(BuildTablesMixin):
         self.add_column(title="Order",
                         static_data_name="order",
                         static_data_template='{{data.order}}',
+                        hideable=False,
                         orderable=True)
 
         self.add_column(title="Task",
                         static_data_name="task_name",
                         static_data_template=task_link_tmpl(
                             "{{data.task_name}}"),
+                        hideable=False,
                         orderable=True)
 
         self.add_column(title="Recipe",
                         static_data_name='recipe__name',
                         static_data_template=recipe_name_tmpl,
+                        hideable=False,
                         orderable=True)
 
         self.add_column(title="Recipe version",
Signature · 1 line
2.6.6
author
#2 lore raw

PATCH 2/3 toaster: set non-hideable columns for built recipes table

In reply to Ed Bartosh

From: Elliot Smith <[email protected]>

None of the columns in the built recipes table are marked as not hideable, so it is possible to remove all the columns and make the table disappear.

Set the recipe name and version columns as not hideable.

Also rename the "Name" column to "Recipe", for consistency with the design and with other recipe tables.

[YOCTO #9833]

---
 bitbake/lib/toaster/toastergui/buildtables.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
bitbake/lib/toaster/toastergui/buildtables.py +3 -1
index f845c66..82a8ba5 100644
@@ -295,13 +295,15 @@ class BuiltRecipesTable(BuildTablesMixin):
         {% endif %}{% endwith %}{% endwith %}
         '''
 
-        self.add_column(title="Name",
+        self.add_column(title="Recipe",
                         field_name="name",
                         static_data_name='name',
                         orderable=True,
+                        hideable=False,
                         static_data_template=recipe_name_tmpl)
 
         self.add_column(title="Version",
+                        hideable=False,
                         field_name="version")
 
         self.add_column(title="Dependencies",
Signature · 1 line
2.6.6
author
#3 lore raw

PATCH 3/3 toaster-tests: add tasks and recipes sub-page tests

In reply to Ed Bartosh

From: Elliot Smith <[email protected]>

Add tests for the tasks and recipes sub-pages of the build dashboard.

[YOCTO #9833]

---
 .../browser/test_builddashboard_page_recipes.py    | 66 ++++++++++++++++++++++
 .../browser/test_builddashboard_page_tasks.py      | 65 +++++++++++++++++++++
 2 files changed, 131 insertions(+)
 create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py
 create mode 100644 bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py
bitbake/lib/toaster/tests/browser/test_builddashboard_page_recipes.py new file +66 -0
new file mode 100644
index 0000000..ed18324
@@ -0,0 +1,66 @@
+#! /usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# BitBake Toaster Implementation
+#
+# Copyright (C) 2013-2016 Intel Corporation
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+from django.core.urlresolvers import reverse
+from django.utils import timezone
+from tests.browser.selenium_helpers import SeleniumTestCase
+from orm.models import Project, Build, Recipe, Task, Layer, Layer_Version
+from orm.models import Target
+
+class TestBuilddashboardPageRecipes(SeleniumTestCase):
+    """ Test build dashboard recipes sub-page """
+
+    def setUp(self):
+        project = Project.objects.get_or_create_default_project()
+
+        now = timezone.now()
+
+        self.build = Build.objects.create(project=project,
+                                          started_on=now,
+                                          completed_on=now)
+
+        layer = Layer.objects.create()
+
+        layer_version = Layer_Version.objects.create(layer=layer,
+            build=self.build)
+
+        recipe = Recipe.objects.create(layer_version=layer_version)
+
+        task = Task.objects.create(build=self.build, recipe=recipe, order=1)
+
+        Target.objects.create(build=self.build, task=task, target='do_build')
+
+    def test_build_recipes_columns(self):
+        """
+        Check that non-hideable columns of the table on the recipes sub-page
+        are disabled on the edit columns dropdown.
+        """
+        url = reverse('recipes', args=(self.build.id,))
+        self.get(url)
+
+        self.wait_until_visible('#edit-columns-button')
+
+        # check that options for the non-hideable columns are disabled
+        non_hideable = ['name', 'version']
+
+        for column in non_hideable:
+            selector = 'input#checkbox-%s[disabled="disabled"]' % column
+            self.wait_until_present(selector)
bitbake/lib/toaster/tests/browser/test_builddashboard_page_tasks.py new file +65 -0

65 lines not on this page · raw message

Signature · 1 line
2.6.6