[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