Пример #1
0
def get_location(request, default=MINSK):
    location = request.session.get("location", None)
    if location and len(str(location[0])) < 4:
        return location

    remote_addr = request.META["REMOTE_ADDR"]
    if remote_addr == "127.0.0.1":
        request.session["location"] = default
        request.session["django_timezone"] = pytz.timezone("Europe/Minsk")
        return default

    gi = GeoIP.open(settings.GEOIP_CITY, GeoIP.GEOIP_INDEX_CACHE | GeoIP.GEOIP_CHECK_CACHE)
    geoip = gi.record_by_name(remote_addr)
    if not geoip:
        request.session["location"] = default
        return default

    time_zone = geoip.get("time_zone", None)
    if time_zone:
        request.session["django_timezone"] = pytz.timezone(time_zone)
    country = geoip.get("country_name", None)
    if country:
        request.session["country"] = country
    country_code = geoip.get("country_code", None)
    if country_code:
        request.session["country_code"] = country_code

    city = geoip.get("city", None)
    if city:
        request.session["city"] = city
        lat = geoip.get("latitude", None)
        lng = geoip.get("longitude", None)
        request.session["location"] = [lat, lng]
    else:
        request.session["city"] = "Minsk"
        request.session["location"] = default
    # wtf ?
    return request.session["location"]