import googlemaps
from colorama import Fore, Style
from backend.core.models import Organization
GOOGLE_KEY = '<KEY HERE>'
gmaps = googlemaps.Client(key=GOOGLE_KEY)
def gc(address):
geocode_result = gmaps.geocode(address)
# print(geocode_result) if geocode_result:
results = len(geocode_result)
if results > 1:
print(Fore.RED + f"Found {results} matches...")
print(Style.RESET_ALL)
print(geocode_result)
return None, f"Too Many: {results}" gc_loc = geocode_result[0]
addr = gc_loc['formatted_address']
print(f'{address} -> {addr}')
loc = gc_loc['geometry']['location']
return loc['lat'], loc['lng']
else:
print(Fore.RED + f"Found No matches...")
print(Style.RESET_ALL)
return None, "No Matches"cnt = 0for o in Organization.objects.filter(address__location__isnull=True, properties__danone__gcResult__isnull=True).exclude(address__address_line=''):
address = ",".join([
o.address.address_line,
o.address.street,
o.address.city,
o.address.state,
o.address.postcode,
])
print(o.id, o.name, address)
lat, lon = gc(address)
danone = o.properties.setdefault('danone', dict())
if lat:
gc_loc = f"{lat}, {lon}" print(Fore.GREEN + f'{lat}, {lon}')
print(Style.RESET_ALL)
cnt += 1 danone['gcResult'] = gc_loc
o.address.location = gc_loc
o.address.save()
else:
danone['gcResult'] = lon
o.save()
print(cnt)