On Tue, 2015-06-16 at 18:23 +0200, Martin Kolman wrote:
Adapt to the changed category handling and other less significant
changes such as root path handling. Also remove a couple unused
imports when we are at it.
Resolves: rhbz#1229747
Signed-off-by: Martin Kolman <mkolman(a)redhat.com>
---
initial_setup/__main__.py | 24 +++------
initial_setup/common.py | 63 ++++++++++++++++++++++++
initial_setup/gui/gui.py | 6 +--
initial_setup/gui/hubs/initial_setup.glade | 27 +++++++----
initial_setup/gui/hubs/initial_setup_hub.py | 75 ++---------------------------
initial_setup/gui/spokes/eula.glade | 2 -
initial_setup/gui/spokes/eula.py | 9 +++-
initial_setup/post_installclass.py | 2 +-
initial_setup/tui/hubs/initial_setup_hub.py | 11 +++--
initial_setup/tui/spokes/eula.py | 3 +-
initial_setup/tui/tui.py | 4 --
11 files changed, 110 insertions(+), 116 deletions(-)
create mode 100644 initial_setup/common.py
diff --git a/initial_setup/__main__.py b/initial_setup/__main__.py
index 642e93c..d9e411f 100644
--- a/initial_setup/__main__.py
+++ b/initial_setup/__main__.py
@@ -5,7 +5,7 @@ import signal
import pykickstart
import logging
from pyanaconda.users import Users
-from initial_setup.post_installclass import InstallClass
+from initial_setup.post_installclass import PostInstallClass
from initial_setup import initial_setup_log
from pyanaconda import iutil
@@ -35,14 +35,6 @@ if mode == "gui":
gi.overrides.__path__.insert(0, p)
log.debug("GI overrides imported")
-# set the root path to / so the imported spokes
-# know where to apply their changes
-from pyanaconda import constants
-
-# this has to stay in the form constants.ROOT_PATH so it modifies
-# the scalar in anaconda, not the local copy here
-constants.ROOT_PATH = "/"
-
from pyanaconda.addons import collect_addon_paths
addon_paths = ["/usr/share/initial-setup/modules",
"/usr/share/anaconda/addons"]
@@ -99,14 +91,14 @@ try:
parser.readKickstart(INPUT_KICKSTART_PATH)
log.info("kickstart parsing done")
except pykickstart.errors.KickstartError as kserr:
- log.exception("kickstart parsing failed")
+ log.exception("kickstart parsing failed: %s" % kserr)
sys.exit(1)
if mode == "gui":
try:
# Try to import IS gui specifics
log.debug("trying to import GUI")
- import gui
+ import initial_setup.gui
except ImportError:
log.exception("GUI import failed, falling back to TUI")
mode = "tui"
@@ -115,21 +107,21 @@ if mode == "gui":
# gui already imported (see above)
# Add addons to search paths
- gui.InitialSetupGraphicalUserInterface.update_paths(addon_module_paths)
+
initial_setup.gui.InitialSetupGraphicalUserInterface.update_paths(addon_module_paths)
# Initialize the UI
log.debug("initializing GUI")
- ui = gui.InitialSetupGraphicalUserInterface(None, None, InstallClass())
+ ui = initial_setup.gui.InitialSetupGraphicalUserInterface(None, None,
PostInstallClass())
else:
# Import IS gui specifics
- import tui
+ import initial_setup.tui
# Add addons to search paths
- tui.InitialSetupTextUserInterface.update_paths(addon_module_paths)
+ initial_setup.tui.InitialSetupTextUserInterface.update_paths(addon_module_paths)
# Initialize the UI
log.debug("initializing TUI")
- ui = tui.InitialSetupTextUserInterface(None, None, None)
+ ui = initial_setup.tui.InitialSetupTextUserInterface(None, None, None)
# Pass the data object to user inteface
log.debug("setting up the UI")
diff --git a/initial_setup/common.py b/initial_setup/common.py
new file mode 100644
index 0000000..ce8e5b1
--- /dev/null
+++ b/initial_setup/common.py
@@ -0,0 +1,63 @@
+"""Common methods for Initial Setup"""
+
+from pyanaconda.ui.common import collect
+from pyanaconda.constants import FIRSTBOOT_ENVIRON
+from pyanaconda.i18n import N_
+from pyanaconda.ui.categories import SpokeCategory
+
+
+def collect_spokes(mask_paths, spoke_parent_class):
+ """Return a list of all spoke subclasses that should appear for a
given
+ category. Look for them in files imported as module_path % basename(f)
+
+ :param mask_paths: list of mask, path tuples to search for classes
+ :type mask_paths: list of (mask, path)
+
+ :param spoke_parent_class: Spoke parent class used for checking spoke
compatibility
+ :type spoke_parent_class: GUI or TUI Spoke class
+
+ :return: list of Spoke classes belonging to category
+ :rtype: list of Spoke classes
+
+ """
+ spokes = []
+ for mask, path in mask_paths:
+
Extra blank line.
+ spokes.extend(collect(mask, path,
+ lambda obj: issubclass(obj, spoke_parent_class) and
obj.should_run("firstboot", None)))
+ return spokes
+
--
Vratislav Podzimek
Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic