user6216224
user6216224

Reputation:

Using geoip2 for timezone look up

The django.contrib.gis.geoip2 framework expose a high level geolocation api. I want to use it to look up the user timezone, but the queries do not return the timezone, although the maxmind documetion says that their databases include them. Am I missing something or how could this be done?

Upvotes: 3

Views: 1191

Answers (2)

gar
gar

Reputation: 14580

The class below over-rides the GeoIP2 class to expose timezone info. Could be useful until / if it's added in the base class (will try to raise a PR for it soon if nobody gets to it first)

from django.contrib.gis.geoip2 import GeoIP2


class GeoipWithTimezone(GeoIP2):
    def timezone(self, query):
        enc_query = self._check_query(query, city=True)
        return self._city.city(enc_query).location.time_zone

Upvotes: 1

Matt Johnson-Pint
Matt Johnson-Pint

Reputation: 241890

It would appear that time_zone is a field on the geoip2.records.Location class in the MaxMind GeoIP2 API.

On the Django wrapper, the response is defined here, and does not forward the time_zone field along.

You could add a line to the wrapper that is simply:

    'time_zone': response.location.time_zone,

I'm sure they would appreciate a pull request. :)

Upvotes: 3

Related Questions