Your message dated Thu, 10 Jul 2025 10:00:12 +0000
with message-id <e1uzo4a-00e8lt...@respighi.debian.org>
and subject line unblock horizon
has caused the Debian Bug report #1109042,
regarding unblock: horizon/3:25.3.0-2
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)
--
1109042: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1109042
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: hori...@packages.debian.org
Control: affects -1 + src:horizon
Please unblock package horizon
[ Reason ]
This is a fix for:
https://bugs.debian.org/1108931
What's going on is that Horizon tried to import from a folder
that is gone once the last plugin is removed.
What I did is a simple try/catch thingy, so that it wont
crash, and then not include the enabled code when it does
not exist. The diff is simple and is more easy to understand
than my explanations, I believe.
[ Impact ]
Stack dump in collect_static when removing the last plugin.
[ Tests ]
Tried manually that it fixed, and it indeed works.
[ Risks ]
Not much risk.
[ Checklist ]
[x] all changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in testing
unblock horizon/3:25.3.0-2
diff --git a/debian/changelog b/debian/changelog
index 49ed3f785..befa030ec 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+horizon (3:25.3.0-3) unstable; urgency=medium
+
+ * Refreshed:
+ Dont_load_user_role_assignment_or_groups_tabs_for_non-admins.patch.
+ * Add do-not-import-enabled-if-no-plugins.patch (Closes: #1108931).
+
+ -- Thomas Goirand <z...@debian.org> Thu, 10 Jul 2025 11:09:04 +0200
+
horizon (3:25.3.0-2) unstable; urgency=medium
* Uploading to unstable.
diff --git
a/debian/patches/Dont_load_user_role_assignment_or_groups_tabs_for_non-admins.patch
b/debian/patches/Dont_load_user_role_assignment_or_groups_tabs_for_non-admins.patch
index 2846f892c..356401c1a 100644
---
a/debian/patches/Dont_load_user_role_assignment_or_groups_tabs_for_non-admins.patch
+++
b/debian/patches/Dont_load_user_role_assignment_or_groups_tabs_for_non-admins.patch
@@ -21,7 +21,7 @@ Index:
horizon/openstack_dashboard/dashboards/identity/users/tabs.py
===================================================================
--- horizon.orig/openstack_dashboard/dashboards/identity/users/tabs.py
+++ horizon/openstack_dashboard/dashboards/identity/users/tabs.py
-@@ -91,6 +91,10 @@ class RoleAssignmentsTab(tabs.TableTab):
+@@ -95,6 +95,10 @@ class RoleAssignmentsTab(tabs.TableTab):
preload = False
policy_rules = (("identity", "identity:list_role_assignments"),)
@@ -32,7 +32,7 @@ Index:
horizon/openstack_dashboard/dashboards/identity/users/tabs.py
def get_roleassignmentstable_data(self):
user = self.tab_group.kwargs['user']
-@@ -138,6 +142,10 @@ class GroupsTab(tabs.TableTab):
+@@ -142,6 +146,10 @@ class GroupsTab(tabs.TableTab):
preload = False
policy_rules = (("identity", "identity:list_groups"),)
diff --git a/debian/patches/do-not-import-enabled-if-no-plugins.patch
b/debian/patches/do-not-import-enabled-if-no-plugins.patch
new file mode 100644
index 000000000..a53c3332e
--- /dev/null
+++ b/debian/patches/do-not-import-enabled-if-no-plugins.patch
@@ -0,0 +1,57 @@
+Description: Do not import enabled if no plugins
+ Without this patch, removing the *last* plugin form Horizon will crash
+ collect static with:
+ File "/usr/lib/python3/dist-packages/openstack_dashboard/settings.py", line
31, in <module>
+ from openstack_dashboard.local import enabled as local_enabled
+ ImportError: cannot import name 'enabled' from 'openstack_dashboard.local'
(/usr/lib/python3/dist-packages/openstack_dashboard/local/__init__.py)
+Author: Thomas Goirand <z...@debian.org>
+Bug-Debian: https://bugs.debian.org/1108931
+Forwarded: https://review.opendev.org/c/openstack/horizon/+/954568
+Last-Update: 2025-07-10
+
+--- horizon-25.3.0.orig/openstack_dashboard/settings.py
++++ horizon-25.3.0/openstack_dashboard/settings.py
+@@ -28,7 +28,10 @@ from horizon.utils.escape import monkeyp
+
+ from openstack_dashboard import enabled
+ from openstack_dashboard import exceptions
+-from openstack_dashboard.local import enabled as local_enabled
++try:
++ from openstack_dashboard.local import enabled as local_enabled
++except ImportError:
++ pass
+ from openstack_dashboard import theme_settings
+ from openstack_dashboard.utils import config
+ from openstack_dashboard.utils import settings as settings_utils
+@@ -348,14 +351,23 @@ settings_utils.find_static_files(HORIZON
+ THEME_COLLECTION_DIR, ROOT_PATH)
+
+ INSTALLED_APPS = list(INSTALLED_APPS) # Make sure it's mutable
+-settings_utils.update_dashboards(
+- [
+- enabled,
+- local_enabled,
+- ],
+- HORIZON_CONFIG,
+- INSTALLED_APPS,
+-)
++try:
++ settings_utils.update_dashboards(
++ [
++ enabled,
++ local_enabled,
++ ],
++ HORIZON_CONFIG,
++ INSTALLED_APPS,
++ )
++except NameError:
++ settings_utils.update_dashboards(
++ [
++ enabled,
++ ],
++ HORIZON_CONFIG,
++ INSTALLED_APPS,
++ )
+ INSTALLED_APPS[0:0] = ADD_INSTALLED_APPS
+
+ # Include xstatic_modules specified in plugin
diff --git a/debian/patches/series b/debian/patches/series
index 4e14bc922..2d54855ae 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -5,3 +5,4 @@ remove-test_rbac_panels.patch
Allow_non-admins_to_cold_migrate_instances.patch
remove-broken-test-in-bookworm-backports.patch
fix-serial_console.scss.patch
+do-not-import-enabled-if-no-plugins.patch
--- End Message ---
--- Begin Message ---
Unblocked.
--- End Message ---