def get_time_zone_by_ip(self, request): ''' http://packages.python.org/pygeoip/ ''' gi = GeoIP(settings.GEOIP_PATH + settings.GEOIP_CITY, pygeoip.STANDARD) client_ip = request.get_host().split(':')[0] try: time_zone = gi.time_zone_by_addr(client_ip) except: return None else: if not time_zone: client_ip = request.META.get('REMOTE_ADDR') time_zone = gi.time_zone_by_addr(client_ip) return time_zone
def process_request(self, request): if 'django_timezone' in request.session: tzname = request.session['django_timezone'] timezone.activate(pytz.timezone(tzname)) else: ip = get_real_ip(request) if ip is not None: gi = GeoIP(settings.GEOIP_DATABASE, MEMORY_CACHE) tzname = gi.time_zone_by_addr(ip) if tzname is not None: request.session['django_timezone'] = tzname timezone.activate(pytz.timezone(tzname)) else: timezone.deactivate()