diff -Nru horizon-19.2.0+git2021072116.b58ac2894/AUTHORS horizon-20.1.0/AUTHORS
--- horizon-19.2.0+git2021072116.b58ac2894/AUTHORS 2021-07-21 20:46:27.000000000 +0000
+++ horizon-20.1.0/AUTHORS 2021-09-23 09:32:33.000000000 +0000
@@ -454,6 +454,7 @@
Luong Anh Tuan
Majdi Lada
Malini Bhandaru
+Manpreet Kaur
MaoyangLiu
Marc Fouché
Marc Methot
@@ -738,6 +739,7 @@
Tyler Smith
Tyr Johanson
Tzu-Mainn Chen
+Vadym Markov
Vahid Hashemian
Val W
Valerie Roske
@@ -934,6 +936,7 @@
shlo
shlo
shu-mutou
+shubhamdang
shutingm
simon
sleepsonthefloor
@@ -996,6 +999,7 @@
zhubx007
zhufl
zhurong
+zitptan
zzxwill
Łukasz Jernaś
Łukasz Jernaś
diff -Nru horizon-19.2.0+git2021072116.b58ac2894/ChangeLog horizon-20.1.0/ChangeLog
--- horizon-19.2.0+git2021072116.b58ac2894/ChangeLog 2021-07-21 20:46:27.000000000 +0000
+++ horizon-20.1.0/ChangeLog 2021-09-23 09:32:32.000000000 +0000
@@ -1,16 +1,49 @@
CHANGES
=======
+20.1.0
+------
+
+* workflow: Do not touch dict during iteration
+* Add a release note on Django 3.2 support
+* Bump decorator version in lower-constraints.txt
+* Support Django 3.2 support (2)
+* Preparation for Django 3.2 support
+* Preparation for Django 3.0 and 3.1 support (2)
+* Support Django 3.2 support (3)
+* Support Django 3.2 support (1)
+* Support Django 3.0 and 3.1 support (4)
+* Support Django 3.0 and 3.1 support (3)
+* Support Django 3.0 and 3.1 support (2)
+* Add horizontal scrollbar to role dropdown
+* Support Django 3.0 and 3.1 support (1)
+* Imported Translations from Zanata
+* Escape unicode characters when setting logout\_reason cookie
+* Changes for tacker-horizon integration tests
+* Proper title for Format column
+* Show image names at Admin-Instances dashboard
+* Add Create QoS operation to Network QoS Panel
+* Add POST/Redirect/GET for Domains dashboard
+
+20.0.0
+------
+
+* Clean up the workaround of cinderclient v2->v3 transition
* Drop cinder v2 API support
+* Enable CSRF token handling for PUT and PATCH reqs
+* Fix Unable to use multiattach volume as boot for new server
+* Make word wrapping consistent
* Imported Translations from Zanata
* Imported Translations from Zanata
* Imported Translations from Zanata
+* Magic Search filter facet removal fix
* integration tests: Relax router interface status check
* Imported Translations from Zanata
* Imported Translations from Zanata
* doc: Update our IRC server to OFTC
* Imported Translations from Zanata
* Default role checker should be case-insensitive
+* Added a condition to check whether value is in present in choices for ThemableSelectWidget
* Imported Translations from Zanata
* Consisent abbreviation of size units
* setup.cfg: Replace dashes with underscores
@@ -18,6 +51,7 @@
* Imported Translations from Zanata
* Imported Translations from Zanata
* Imported Translations from Zanata
+* Drop nodejs10 job
* Setup project-template for nodejs14 jobs
* Imported Translations from Zanata
* Change with\_data=False for swift\_get\_container
@@ -55,6 +89,7 @@
* Handle an attached volume without volume\_image\_metadata
* test: Ensure to stop mock when create\_mocks decorator exits
* Fix community image handling in launch instance form
+* Preparation for Django 3.0 and 3.1 support (1)
* Fix typo in horizon/exceptions.py
* Imported Translations from Zanata
* Fix Material theme to work with any combination of pyScss and MDI icons
@@ -67,6 +102,7 @@
* Drop the usage of unicode prefix from unicode strings
* Add openstack\_auth to translation-related commands
* security\_groups panel: Add neutron policy enforcement
+* Update doc8 min version
* Imported Translations from Zanata
* Use override\_settings decorator consistently
* Don't fail integration tests if browser log couldn't be retrieved
diff -Nru horizon-19.2.0+git2021072116.b58ac2894/debian/changelog horizon-20.1.0/debian/changelog
--- horizon-19.2.0+git2021072116.b58ac2894/debian/changelog 2021-07-21 20:50:25.000000000 +0000
+++ horizon-20.1.0/debian/changelog 2021-10-07 11:21:46.000000000 +0000
@@ -1,3 +1,16 @@
+horizon (4:20.1.0-0ubuntu1) impish; urgency=medium
+
+ * d/watch: Scope to 20.x series.
+ * New upstream release for OpenStack Xena.
+
+ -- Chris MacNaughton Thu, 07 Oct 2021 11:21:46 +0000
+
+horizon (4:20.0.0+git2021091315.420eaa5ba-0ubuntu1) impish; urgency=medium
+
+ * New upstream snapshot for OpenStack Xena.
+
+ -- Corey Bryant Mon, 13 Sep 2021 15:55:38 -0400
+
horizon (4:19.2.0+git2021072116.b58ac2894-0ubuntu1) impish; urgency=medium
* New upstream snapshot for OpenStack Xena.
diff -Nru horizon-19.2.0+git2021072116.b58ac2894/debian/watch horizon-20.1.0/debian/watch
--- horizon-19.2.0+git2021072116.b58ac2894/debian/watch 2021-07-21 20:49:57.000000000 +0000
+++ horizon-20.1.0/debian/watch 2021-10-07 10:58:58.000000000 +0000
@@ -1,3 +1,3 @@
version=3
opts="uversionmangle=s/\.([a-zA-Z])/~$1/;s/%7E/~/;s/\.0b/~b/;s/\.0rc/~rc/" \
- https://tarballs.opendev.org/openstack/horizon/ horizon-(19\.\d.*)\.tar\.gz
+ https://tarballs.opendev.org/openstack/horizon/ horizon-(20\.\d.*)\.tar\.gz
diff -Nru horizon-19.2.0+git2021072116.b58ac2894/doc/requirements.txt horizon-20.1.0/doc/requirements.txt
--- horizon-19.2.0+git2021072116.b58ac2894/doc/requirements.txt 2021-06-28 19:33:50.000000000 +0000
+++ horizon-20.1.0/doc/requirements.txt 2021-09-23 09:31:43.000000000 +0000
@@ -8,7 +8,7 @@
openstackdocstheme>=2.2.0 # Apache-2.0
reno>=3.1.0 # Apache-2.0
sphinx>=2.0.0,!=2.1.0 # BSD
-doc8>=0.6.0 # Apache-2.0
+doc8>=0.8.1 # Apache-2.0
# The below is rewquired to build testing module reference
mock>=2.0.0 # BSD
diff -Nru horizon-19.2.0+git2021072116.b58ac2894/doc/source/install/system-requirements.rst horizon-20.1.0/doc/source/install/system-requirements.rst
--- horizon-19.2.0+git2021072116.b58ac2894/doc/source/install/system-requirements.rst 2021-06-28 19:33:50.000000000 +0000
+++ horizon-20.1.0/doc/source/install/system-requirements.rst 2021-09-23 09:31:43.000000000 +0000
@@ -8,6 +8,8 @@
* Django 2.2
+ * Django 3.2 support is experimental as of Xena release.
+ (Yoga release will use Django 3.2 as the primary Django version.)
* Django support policy is documented at :ref:`django_support`.
* An accessible `keystone `_ endpoint
diff -Nru horizon-19.2.0+git2021072116.b58ac2894/horizon/decorators.py horizon-20.1.0/horizon/decorators.py
--- horizon-19.2.0+git2021072116.b58ac2894/horizon/decorators.py 2021-06-28 19:33:50.000000000 +0000
+++ horizon-20.1.0/horizon/decorators.py 2021-09-23 09:31:44.000000000 +0000
@@ -21,13 +21,12 @@
"""
import functools
-from django.utils.decorators import available_attrs
from django.utils.translation import ugettext_lazy as _
def _current_component(view_func, dashboard=None, panel=None):
"""Sets the currently-active dashboard and/or panel on the request."""
- @functools.wraps(view_func, assigned=available_attrs(view_func))
+ @functools.wraps(view_func, assigned=functools.WRAPPER_ASSIGNMENTS)
def dec(request, *args, **kwargs):
if dashboard:
request.horizon['dashboard'] = dashboard
@@ -46,7 +45,7 @@
"""
from horizon.exceptions import NotAuthenticated
- @functools.wraps(view_func, assigned=available_attrs(view_func))
+ @functools.wraps(view_func, assigned=functools.WRAPPER_ASSIGNMENTS)
def dec(request, *args, **kwargs):
if request.user.is_authenticated:
return view_func(request, *args, **kwargs)
@@ -77,7 +76,7 @@
current_perms = getattr(view_func, '_required_perms', set([]))
view_func._required_perms = current_perms | set(required)
- @functools.wraps(view_func, assigned=available_attrs(view_func))
+ @functools.wraps(view_func, assigned=functools.WRAPPER_ASSIGNMENTS)
def dec(request, *args, **kwargs):
if request.user.is_authenticated:
if request.user.has_perms(view_func._required_perms):
@@ -103,7 +102,7 @@
"""
from horizon.exceptions import NotAuthorized
- @functools.wraps(view_func, assigned=available_attrs(view_func))
+ @functools.wraps(view_func, assigned=functools.WRAPPER_ASSIGNMENTS)
def dec(request, *args, **kwargs):
if not component.can_access({'request': request}):
raise NotAuthorized(_("You are not authorized to access %s")
diff -Nru horizon-19.2.0+git2021072116.b58ac2894/horizon/forms/fields.py horizon-20.1.0/horizon/forms/fields.py
--- horizon-19.2.0+git2021072116.b58ac2894/horizon/forms/fields.py 2021-06-28 19:33:50.000000000 +0000
+++ horizon-20.1.0/horizon/forms/fields.py 2021-09-23 09:31:44.000000000 +0000
@@ -308,6 +308,8 @@
new_choices = []
initial_value = value
+ # Initially assuming value is not present in choices.
+ value_in_choices = False
for opt_value, opt_label in itertools.chain(self.choices, choices):
other_html = self.transform_option_html_attrs(opt_label)
@@ -318,15 +320,19 @@
opt_label = self.transform_option_label(opt_label)
# If value exists, save off its label for use
+ # and setting value in choices to True
if opt_value == value:
initial_value = opt_label
+ value_in_choices = True
if other_html:
new_choices.append((opt_value, opt_label, other_html))
else:
new_choices.append((opt_value, opt_label))
- if value is None and new_choices:
+ # if value is None or it is not present in choices then set
+ # the first value of choices.
+ if (value is None or not value_in_choices) and new_choices:
initial_value = new_choices[0][1]
attrs = self.build_attrs(attrs)
diff -Nru horizon-19.2.0+git2021072116.b58ac2894/horizon/locale/ru/LC_MESSAGES/django.po horizon-20.1.0/horizon/locale/ru/LC_MESSAGES/django.po
--- horizon-19.2.0+git2021072116.b58ac2894/horizon/locale/ru/LC_MESSAGES/django.po 2021-06-28 19:33:50.000000000 +0000
+++ horizon-20.1.0/horizon/locale/ru/LC_MESSAGES/django.po 2021-09-23 09:31:44.000000000 +0000
@@ -21,16 +21,17 @@
# Ilya Alekseyev , 2017. #zanata
# Ilya Alekseyev , 2018. #zanata
# Dmitriy Rabotyagov , 2020. #zanata
+# Roman Gorshunov , 2021. #zanata
msgid ""
msgstr ""
"Project-Id-Version: horizon VERSION\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/openstack-i18n/\n"
-"POT-Creation-Date: 2021-05-11 12:54+0000\n"
+"POT-Creation-Date: 2021-09-09 10:31+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"PO-Revision-Date: 2020-09-16 04:41+0000\n"
-"Last-Translator: Dmitriy Rabotyagov \n"
+"PO-Revision-Date: 2021-09-06 04:20+0000\n"
+"Last-Translator: Roman Gorshunov \n"
"Language: ru\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
@@ -51,6 +52,13 @@
msgstr "%(name)s: %(error)s"
#, python-format
+msgid "%(size)d B"
+msgid_plural "%(size)d B"
+msgstr[0] "%(size)d байт"
+msgstr[1] "%(size)d байта"
+msgstr[2] "%(size)d байт"
+
+#, python-format
msgid "%(usedphrase)s %(used)s (No Limit)"
msgstr "%(usedphrase)s %(used)s (без ограничений)"
@@ -113,6 +121,9 @@
msgid "-"
msgstr "-"
+msgid "0 B"
+msgstr "0 байт"
+
#, python-format
msgid "A %(resource)s with the name \"%(name)s\" already exists."
msgstr "%(resource)s с именем\"%(name)s\" уже существует."
diff -Nru horizon-19.2.0+git2021072116.b58ac2894/horizon/static/framework/widgets/magic-search/magic-search.controller.js horizon-20.1.0/horizon/static/framework/widgets/magic-search/magic-search.controller.js
--- horizon-19.2.0+git2021072116.b58ac2894/horizon/static/framework/widgets/magic-search/magic-search.controller.js 2021-06-28 19:33:50.000000000 +0000
+++ horizon-20.1.0/horizon/static/framework/widgets/magic-search/magic-search.controller.js 2021-09-23 09:31:44.000000000 +0000
@@ -334,6 +334,10 @@
delete ctrl.textSearch;
} else {
$scope.$emit(magicSearchEvents.SEARCH_UPDATED, query);
+ if (angular.isDefined(ctrl.textSearch)) {
+ // emit text search if text facet remains
+ emitTextSearch(ctrl.textSearch || '');
+ }
if (ctrl.currentSearch.length > 0) {
// prune facets as needed from menus
var newFacet = ctrl.currentSearch[ctrl.currentSearch.length - 1].name;
diff -Nru horizon-19.2.0+git2021072116.b58ac2894/horizon/static/framework/widgets/magic-search/magic-search.controller.spec.js horizon-20.1.0/horizon/static/framework/widgets/magic-search/magic-search.controller.spec.js
--- horizon-19.2.0+git2021072116.b58ac2894/horizon/static/framework/widgets/magic-search/magic-search.controller.spec.js 2021-06-28 19:33:50.000000000 +0000
+++ horizon-20.1.0/horizon/static/framework/widgets/magic-search/magic-search.controller.spec.js 2021-09-23 09:31:44.000000000 +0000
@@ -509,6 +509,14 @@
expect(scope.strings.prompt).toEqual('');
});
+ it("emits textSearch if text facet remains", function() {
+ spyOn(scope, '$emit');
+ ctrl.currentSearch = [{}];
+ ctrl.textSearch = 'cat';
+ ctrl.removeFacet(0);
+ expect(scope.$emit).toHaveBeenCalledWith(magicSearchEvents.TEXT_SEARCH, 'cat', undefined);
+ });
+
it("resets state if facet selected", function() {
ctrl.currentSearch = [{}];
ctrl.facetSelected = {};
diff -Nru horizon-19.2.0+git2021072116.b58ac2894/horizon/tables/base.py horizon-20.1.0/horizon/tables/base.py
--- horizon-19.2.0+git2021072116.b58ac2894/horizon/tables/base.py 2021-06-28 19:33:50.000000000 +0000
+++ horizon-20.1.0/horizon/tables/base.py 2021-09-23 09:31:44.000000000 +0000
@@ -1922,7 +1922,7 @@
def get_columns(self):
"""Returns this table's columns including auto-generated ones."""
- return self.columns.values()
+ return list(self.columns.values())
def get_rows(self):
"""Return the row data for this table broken out by columns."""
diff -Nru horizon-19.2.0+git2021072116.b58ac2894/horizon/templates/auth/_login_form.html horizon-20.1.0/horizon/templates/auth/_login_form.html
--- horizon-19.2.0+git2021072116.b58ac2894/horizon/templates/auth/_login_form.html 2021-06-28 19:33:50.000000000 +0000
+++ horizon-20.1.0/horizon/templates/auth/_login_form.html 2021-09-23 09:31:44.000000000 +0000
@@ -52,13 +52,13 @@
{% endif %}
- {% if request.COOKIES.logout_reason %}
- {% if request.COOKIES.logout_status == "success" %}
+ {% if logout_reason %}
+ {% if logout_status == "success" %}
{%endif%}