do full location resolution when location is not specified (experimental)

pull/262/head
Igor Chubin 6 years ago
parent 595428ea66
commit b75f991b30

@ -199,7 +199,49 @@ def location_processing(location, ip_addr):
# it should be handled like a search term (for geolocator)
override_location_name = None
full_address = None
hide_full_address = False
force_show_full_address = location is not None and location.startswith('~')
# location ~ means that it should be detected automatically,
# and shown in the location line below the report
if location == '~':
location = None
if location and location.lstrip('~').startswith('@'):
try:
location, country = get_location(
socket.gethostbyname(
location.lstrip('~')[1:]))
location = '~' + location
hide_full_address = not force_show_full_address
except:
location, country = NOT_FOUND_LOCATION, None
query_source_location = get_location(ip_addr)
country = None
if location is None or location == 'MyLocation':
location, country = query_source_location
# Let us try to use geolocation services for locations
# that were derived from IPs.
if location:
location = '~' + location
hide_full_address = not force_show_full_address
elif is_ip(location):
location, country = get_location(location)
# here too
if location:
location = '~' + location
hide_full_address = not force_show_full_address
if location and not location.startswith('~'):
location = location_canonical_name(location)
# up to this point it is possible that the name
# contains some unicode symbols
# here we resolve them
if location is not None and not ascii_only(location):
location = "~" + location
@ -211,27 +253,13 @@ def location_processing(location, ip_addr):
if geolocation is not None:
override_location_name = location[1:].replace('+', ' ')
location = "%s,%s" % (geolocation['latitude'], geolocation['longitude'])
full_address = geolocation['address']
if not hide_full_address:
full_address = geolocation['address']
else:
full_address = None
else:
location = NOT_FOUND_LOCATION #location[1:]
query_source_location = get_location(ip_addr)
country = None
if location is None or location == 'MyLocation':
location, country = query_source_location
if is_ip(location):
location, country = get_location(location)
if location.startswith('@'):
try:
location, country = get_location(socket.gethostbyname(location[1:]))
except:
location, country = NOT_FOUND_LOCATION, None
location = location_canonical_name(location)
return location, \
override_location_name, \
full_address, \

Loading…
Cancel
Save