Re: [PATCH 1/2] use GeoIP information to guess timezone

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2011-10-10 at 13:05 -0700, Brian C. Lane wrote:
> On Fri, Oct 07, 2011 at 03:18:24PM +0200, Vratislav Podzimek wrote:
> > ---
> >  pyanaconda/iw/timezone_gui.py |   10 ++++++++++
> >  pyanaconda/timezone.py        |   31 +++++++++++++++++++++++++++++++
> >  2 files changed, 41 insertions(+), 0 deletions(-)
> > 
> > diff --git a/pyanaconda/iw/timezone_gui.py b/pyanaconda/iw/timezone_gui.py
> > index 6bad1a4..292476d 100644
> > --- a/pyanaconda/iw/timezone_gui.py
> > +++ b/pyanaconda/iw/timezone_gui.py
> > @@ -25,6 +25,7 @@ from scdate.core import zonetab
> >  
> >  from timezone_map_gui import TimezoneMap
> >  from iw_gui import *
> > +from pyanaconda import gui
> >  
> >  from pyanaconda.constants import *
> >  import gettext
> > @@ -80,6 +81,13 @@ class TimezoneWindow(InstallWindow):
> >          self.timezone = anaconda.timezone
> >          (self.default, asUTC) = self.timezone.getTimezoneInfo()
> >  
> > +        wait_window = gui.WaitWindow(_("Getting GeoIP information"), _("Trying to get GeoIP information."))
> > +        timezone_guess = self.timezone.getGeoIPtimezone()
> > +        if timezone_guess:
> > +            self.timezone.setTimezoneInfo(timezone_guess, asUTC)
> > +            self.default = timezone_guess
> > +        wait_window.pop()
> > +
> >          if not self.default:
> >              self.default = anaconda.instLanguage.getDefaultTimeZone()
> >              asUTC = 0
> > @@ -89,6 +97,8 @@ class TimezoneWindow(InstallWindow):
> >  
> >          self.default = self.default.replace("_", " ")
> >  
> > +        
> > +
> 
> Watch out for adding spaces and extra lines :)
> 
> >          self.utcCheckbox.set_active(asUTC)
> >  
> >          if not anaconda.ksdata:
> > diff --git a/pyanaconda/timezone.py b/pyanaconda/timezone.py
> > index 9da44ee..6d40717 100644
> > --- a/pyanaconda/timezone.py
> > +++ b/pyanaconda/timezone.py
> > @@ -23,9 +23,17 @@ import os
> >  from flags import flags
> >  from pyanaconda.constants import ROOT_PATH
> >  
> > +import httplib
> > +import re
> > +from scdate.core import zonetab
> > +import pyanaconda.network
> > +
> >  import logging
> >  log = logging.getLogger("anaconda")
> >  
> > +MIRROR_MANAGER_URL = "mirrors.fedoraproject.org"
> > +MIRROR_LIST_REQUEST = "/mirrorlist?repo=fedora-15&arch=i386"
> > +
> >  class Timezone:
> >      def writeKS(self, f):
> >          f.write("timezone")
> > @@ -76,3 +84,26 @@ class Timezone:
> >      def __init__(self):
> >          self.tz = "America/New_York"
> >          self.utc = 0
> > +
> > +    def getGeoIPtimezone(self):
> > +        if not pyanaconda.network.hasActiveNetDev():
> > +            log.info("Cannot get GeoIP information: network down")
> > +            return None
> > +        conn = httplib.HTTPSConnection(MIRROR_MANAGER_URL)
> > +        conn.request("GET", MIRROR_LIST_REQUEST)
> > +        res = conn.getresponse()
> > +
> > +        data = res.read()
> > +        lines = data.split("\n")
> > +        del(data)
> > +
> > +        m = re.search(r'country\s+=\s+([A-Z]+)', lines[0])
> > +
> > +        zonetab_ = zonetab.ZoneTab()
> > +        country = m.group(1)
> > +
> > +        geoip_timezone = zonetab_.findEntryByCountryCode(country)
> > +        if geoip_timezone:
> > +            return geoip_timezone.tz
> > +
> > +        return None
> 
> I'd like to see better error checking in this block. eg. request and
> search could fail.
Thanks for the comments. However, this patch was not supposed to be
ready-to-push patch for Anaconda. It should just show the way we could
use GeoIP information in timezone selection screen and also problems we
would have to face (e.g. findEntryByCountryCode() exists only on my
local git of system-config-date, it is stupid to use mirrorlist to get
your Country code etc.). Also the 'GeoIP vs.
getDefaultTimezone(language)' policy has to be discussed first.

--
Vratislav Podzimek

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list


[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux