[PATCH 1/2] Don't crash if someone gives us bad timezone

Vratislav Podzimek vpodzime at redhat.com
Fri Aug 24 14:24:09 UTC 2012


Signed-off-by: Vratislav Podzimek <vpodzime at redhat.com>
---
 pyanaconda/kickstart.py                    |  6 +++++-
 pyanaconda/ui/gui/spokes/datetime_spoke.py | 22 ++++++++++++++++------
 2 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index ffa1378..68db3b9 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -1253,8 +1253,12 @@ class Services(commands.services.FC6_Services):
 
 class Timezone(commands.timezone.F18_Timezone):
     def execute(self, *args):
+        # write out timezone configuration
         if not timezone.is_valid_timezone(self.timezone):
-            log.warning("Timezone %s set in kickstart is not valid." % (self.timezone,))
+            # this should never happen, but for pity's sake
+            log.warning("Timezone %s set in kickstart is not valid, falling "\
+                        "back to default (America/New_York)." % (self.timezone,))
+            self.timezone = "America/New_York"
 
         timezone.write_timezone_config(self, ROOT_PATH)
         chronyd_conf_path = os.path.normpath(ROOT_PATH + ntp.NTP_CONFIG_FILE)
diff --git a/pyanaconda/ui/gui/spokes/datetime_spoke.py b/pyanaconda/ui/gui/spokes/datetime_spoke.py
index 4d345df..2fcb333 100644
--- a/pyanaconda/ui/gui/spokes/datetime_spoke.py
+++ b/pyanaconda/ui/gui/spokes/datetime_spoke.py
@@ -23,6 +23,9 @@ import gettext
 _ = lambda x: gettext.ldgettext("anaconda", x)
 N_ = lambda x: x
 
+import logging
+log = logging.getLogger("anaconda")
+
 from gi.repository import AnacondaWidgets, GLib, Gtk
 
 from pyanaconda.ui.gui import GUIObject
@@ -310,10 +313,12 @@ class DatetimeSpoke(NormalSpoke):
             self._set_amPm_part_sensitive(False)
 
         self._update_datetime_timer_id = None
-        if self.data.timezone.timezone:
+        if timezone.is_valid_timezone(self.data.timezone.timezone):
             self._tzmap.set_timezone(self.data.timezone.timezone)
         else:
-            self._tzmap.set_timezone("Europe/Prague")
+            log.warning("%s is not a valid timezone, falling back to default "\
+                        "(America/New_Yor)")
+            self._tzmap.set_timezone("America/New_York")
 
         self._config_dialog = NTPconfigDialog(self.data)
         self._config_dialog.initialize()
@@ -321,7 +326,13 @@ class DatetimeSpoke(NormalSpoke):
     @property
     def status(self):
         if self.data.timezone.timezone:
-            return _("%s timezone") % self.data.timezone.timezone
+            if timezone.is_valid_timezone(self.data.timezone.timezone):
+                valid_str = ""
+            else:
+                valid_str = " " + _("(not valid)")
+
+            return _("%s timezone%s") % (self.data.timezone.timezone, valid_str)
+
         else:
             return _("%s timezone") % self._tzmap.get_timezone()
 
@@ -333,8 +344,7 @@ class DatetimeSpoke(NormalSpoke):
 
     @property
     def completed(self):
-        #Always completed -- some date, time and timezone are always set
-        return True
+        return timezone.is_valid_timezone(self.data.timezone.timezone)
 
     def refresh(self):
         #update the displayed time
@@ -342,7 +352,7 @@ class DatetimeSpoke(NormalSpoke):
                                                     self._update_datetime)
         self._start_updating_timer_id = None
 
-        if self.data.timezone.timezone:
+        if timezone.is_valid_timezone(self.data.timezone.timezone):
             self._tzmap.set_timezone(self.data.timezone.timezone)
 
         self._update_datetime()
-- 
1.7.11.4



More information about the anaconda-patches mailing list