The scheduling is reverted when going back thus it can not be used to
remember user's choice that should preserve if reentering a particular
screen.
Resolves: rhbz#746703
---
pyanaconda/dispatch.py | 5 +++++
pyanaconda/iw/autopart_type.py | 6 +++++-
tests/pyanaconda_test/dispatch_test.py | 12 ++++++++++++
3 files changed, 22 insertions(+), 1 deletions(-)
diff --git a/pyanaconda/dispatch.py b/pyanaconda/dispatch.py
index 6aeae38..18bfa58 100644
--- a/pyanaconda/dispatch.py
+++ b/pyanaconda/dispatch.py
@@ -86,6 +86,8 @@ class Step(object):
self.name = name
self.target = target # None for dynamic target (e.g. gui view)
self._sched = self.SCHED_UNSCHEDULED
+ self.client_data = {} # used by the client code, not reset when
+ # scheduling is reverted
def _reschedule(self, to_sched, current_step):
s_from = self.sched
@@ -334,6 +336,9 @@ class Dispatcher(object):
except errors.DispatchError as e:
log.debug("dispatch: %s" % e)
+ def step_data(self, step):
+ return self.steps[step].client_data
+
def step_disabled(self, step):
""" True if step is not yet scheduled to be run or will never be run
(i.e. is skipped).
diff --git a/pyanaconda/iw/autopart_type.py b/pyanaconda/iw/autopart_type.py
index 536adcc..512d884 100644
--- a/pyanaconda/iw/autopart_type.py
+++ b/pyanaconda/iw/autopart_type.py
@@ -200,6 +200,7 @@ class PartitionTypeWindow(InstallWindow):
self.storage.doAutoPart = True
+ self.dispatch.step_data("parttype")["review_checked"] = self.reviewButton.get_active()
if self.reviewButton.get_active():
self.dispatch.request_steps("partition")
# with kickstart bootloader is already scheduled to be skipped:
@@ -253,7 +254,10 @@ class PartitionTypeWindow(InstallWindow):
self.table = self.xml.get_widget("parttypeTable")
self.prevrev = None
- self.reviewButton.set_active(self.dispatch.step_enabled("partition"))
+
+ step_data = self.dispatch.step_data("parttype")
+ self.reviewButton.set_active(
+ step_data.get("review_checked", self.dispatch.step_enabled("partition")))
self.encryptButton.set_active(self.storage.encryptedAutoPart)
self.lvmButton.set_active(self.storage.lvmAutoPart)
diff --git a/tests/pyanaconda_test/dispatch_test.py b/tests/pyanaconda_test/dispatch_test.py
index b9243f6..9f2fac1 100644
--- a/tests/pyanaconda_test/dispatch_test.py
+++ b/tests/pyanaconda_test/dispatch_test.py
@@ -249,3 +249,15 @@ class DispatchTest(mock.TestCase):
d.steps["betanag"].changes,
{"betanag" : (Step.SCHED_SCHEDULED, Step.SCHED_UNSCHEDULED),
"filtertype" : (Step.SCHED_SCHEDULED, Step.SCHED_UNSCHEDULED)})
+
+ def step_data_test(self):
+ from pyanaconda.dispatch import Step
+ d = self._getDispatcher()
+ self.assertEqual(d.step_data("filter"), {})
+ d.step_data("filter")["key"] = 42
+ # we can retrieve it
+ self.assertEqual(d.step_data("filter")["key"], 42)
+ # it persists over scheduling changes
+ d.schedule_steps("filter")
+ d._revert_scheduling("filter")
+ self.assertEqual(d.step_data("filter")["key"], 42)
--
1.7.6.4