!87 [sync] PR-86: 修复在用户设置自定义磁盘分区时重复点击done按钮时未检测磁盘分区是否正确的问题

From: @openeuler-sync-bot
Reviewed-by: @t_feng,@t_feng
Signed-off-by: @t_feng,@t_feng
This commit is contained in:
openeuler-ci-bot 2021-03-23 16:43:19 +08:00 committed by Gitee
commit 9f8c2c1b26
3 changed files with 203 additions and 1 deletions

View File

@ -1,7 +1,7 @@
%define _empty_manifest_terminate_build 0
Name: anaconda
Version: 33.19
Release: 17
Release: 18
Summary: Graphical system installer
License: GPLv2+ and MIT
URL: http://fedoraproject.org/wiki/Anaconda
@ -56,6 +56,9 @@ Patch6019: ntp-servers-improve-010-Add-support-for-the-timesource-kickstart-c
Patch9024: Change-length-limit-of-hostname-from-255-to-64.patch
Patch6020: bugfix-Schedule-timed-actions-with-the-right-selector-18516.patch
Patch6021: bugfix-Reset-the-state-of-the-custom-partitioning-spoke.patch
%define dbusver 1.2.3
%define dnfver 3.6.0
%define dracutver 034-7
@ -268,6 +271,12 @@ update-desktop-database &> /dev/null || :
%{_datadir}/gtk-doc
%changelog
* Thu Mar 18 2021 liuxin <liuxin264@huawei.com> - 33.19-18
- Type:bugfix
- ID:NA
- SUG:NA
- DESC:reset the state of the custom partitioning spoke
* Mon Jan 25 2021 liuxin <liuxin264@huawei.com> - 33.19-17
- Type:bugfix
- ID:NA

View File

@ -0,0 +1,134 @@
From 8032e0a9eae5093e1246af4d3906ad65d5aade12 Mon Sep 17 00:00:00 2001
From: Vendula Poncova <vponcova@redhat.com>
Date: Wed, 12 Aug 2020 12:38:27 +0200
Subject: [PATCH] Reset the state of the custom partitioning spoke
We should reset the state of the custom partitioning spoke after every user
interaction. If we don't reset the _back_already_clicked attribute, the final
check of the storage configuration might be skipped and the status of the
storage spoke might show an error from the previously failed check.
(cherry picked from commit 0aa3abfb6fb137746a393588ff9315807a65f7b9)
---
pyanaconda/ui/gui/spokes/custom_storage.py | 28 +++++++++++-----------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/custom_storage.py b/pyanaconda/ui/gui/spokes/custom_storage.py
index a5e568f..6c9f6f6 100644
--- a/pyanaconda/ui/gui/spokes/custom_storage.py
+++ b/pyanaconda/ui/gui/spokes/custom_storage.py
@@ -280,7 +280,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
self._storage_module.ResetPartitioning()
def refresh(self):
- self.clear_errors()
+ self.reset_state()
NormalSpoke.refresh(self)
# Make sure the storage spoke execute method has finished before we
@@ -294,8 +294,6 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
self._partitioning = create_partitioning(PARTITIONING_METHOD_INTERACTIVE)
self._device_tree = STORAGE.get_proxy(self._partitioning.GetDeviceTree())
- self._back_already_clicked = False
-
# Get the name of the new installation.
self._os_name = self._device_tree.GenerateSystemName()
@@ -554,8 +552,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
# just-removed device
return
- self.clear_errors()
- self._back_already_clicked = False
+ self.reset_state()
log.debug("Saving the right side for device: %s", device_name)
@@ -979,7 +976,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
def on_add_clicked(self, button):
# Clear any existing errors
- self.clear_errors()
+ self.reset_state()
# Save anything from the currently displayed mount point.
self._save_right_side(self._accordion.current_selector)
@@ -996,8 +993,6 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
dialog.window.destroy()
return
- self._back_already_clicked = False
-
# Gather data about the added mount point.
request = DeviceFactoryRequest()
request.mount_point = dialog.mount_point
@@ -1006,7 +1001,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
request.disks = self._selected_disks
# Clear errors and try to add the mountpoint/device.
- self.clear_errors()
+ self.reset_state()
try:
self._device_tree.AddDevice(
@@ -1065,7 +1060,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
return
# Remove selected items.
- self.clear_errors()
+ self.reset_state()
try:
self._remove_selected_devices()
@@ -1187,7 +1182,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
# disk set management happens through container edit on RHS
return
- self.clear_errors()
+ self.reset_state()
dialog = DisksDialog(
self.data,
@@ -1448,7 +1443,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
Note: There are never any non-existent devices around when this runs.
"""
- self.clear_errors()
+ self.reset_state()
# Create the partitioning request.
request = PartitioningRequest()
@@ -1762,6 +1757,10 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
self._error = None
self.clear_info()
+ def reset_state(self):
+ self.clear_errors()
+ self._back_already_clicked = False
+
# This callback is for the button that just resets the UI to anaconda's
# current understanding of the disk layout.
def on_reset_clicked(self, *args):
@@ -1846,7 +1845,7 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
return
# Clear any existing errors
- self.clear_errors()
+ self.reset_state()
# Save anything from the currently displayed mount point.
self._save_right_side(selector)
@@ -1861,7 +1860,8 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
if not selector:
return
- self.clear_errors()
+ self.reset_state()
+
device_name = selector.device_name
passphrase = self._passphraseEntry.get_text()
--
2.23.0

View File

@ -0,0 +1,59 @@
From 65b176260404087f625132697c1e299db0b0163e Mon Sep 17 00:00:00 2001
From: Vendula Poncova <vponcova@redhat.com>
Date: Wed, 8 Jul 2020 19:07:54 +0200
Subject: [PATCH] Schedule timed actions with the right selector (#1851647)
The timed actions of the Custom Partitioning spoke should be scheduled with
the specified selector. Otherwise, the action will use the current selector
that might be different.
Resolves: rhbz#1851647
---
pyanaconda/ui/gui/spokes/custom_storage.py | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/pyanaconda/ui/gui/spokes/custom_storage.py b/pyanaconda/ui/gui/spokes/custom_storage.py
index b89866c..a5e568f 100644
--- a/pyanaconda/ui/gui/spokes/custom_storage.py
+++ b/pyanaconda/ui/gui/spokes/custom_storage.py
@@ -1836,21 +1836,33 @@ class CustomPartitioningSpoke(NormalSpoke, StorageCheckHandler):
dlg.run()
dlg.destroy()
- @timed_action(delay=50, threshold=100)
def on_update_settings_clicked(self, button):
+ self._update_settings(self._accordion.current_selector)
+
+ @timed_action(delay=50, threshold=100)
+ def _update_settings(self, selector):
""" call _save_right_side, then, perhaps, populate_right_side. """
+ if not selector:
+ return
+
# Clear any existing errors
self.clear_errors()
# Save anything from the currently displayed mount point.
- self._save_right_side(self._accordion.current_selector)
+ self._save_right_side(selector)
self._applyButton.set_sensitive(False)
- @timed_action(delay=50, threshold=100)
def on_unlock_clicked(self, *args):
+ self._unlock_device(self._accordion.current_selector)
+
+ @timed_action(delay=50, threshold=100)
+ def _unlock_device(self, selector):
""" try to open the luks device, populate, then call _do_refresh. """
+ if not selector:
+ return
+
self.clear_errors()
- device_name = self._accordion.current_selector.device_name
+ device_name = selector.device_name
passphrase = self._passphraseEntry.get_text()
log.info("Trying to unlock device %s.", device_name)
--
2.23.0