Add places search api
parent
e7997fab63
commit
0f2654da44
|
@ -1,6 +1,7 @@
|
||||||
import csv
|
import csv
|
||||||
import re
|
import re
|
||||||
import click
|
import click
|
||||||
|
import requests
|
||||||
from flask.cli import AppGroup
|
from flask.cli import AppGroup
|
||||||
from formity.models import FaceshieldRequest, PostalCode
|
from formity.models import FaceshieldRequest, PostalCode
|
||||||
from formity.extensions import db
|
from formity.extensions import db
|
||||||
|
@ -55,6 +56,7 @@ def import_file(input_file, model, lookup, columns=None, delimiter=',', ignore_h
|
||||||
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
@cli.command('extract-postalcodes')
|
@cli.command('extract-postalcodes')
|
||||||
def extract_postalcodes():
|
def extract_postalcodes():
|
||||||
for r in FaceshieldRequest.query.all():
|
for r in FaceshieldRequest.query.all():
|
||||||
|
@ -64,3 +66,34 @@ def extract_postalcodes():
|
||||||
r.shipping_city = PostalCode.query.get(r.shipping_postalcode).city
|
r.shipping_city = PostalCode.query.get(r.shipping_postalcode).city
|
||||||
print(r.id, r.shipping_postalcode)
|
print(r.id, r.shipping_postalcode)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
@cli.command('extract-places')
|
||||||
|
@click.option('--apikey')
|
||||||
|
def extract_places(apikey):
|
||||||
|
places = FaceshieldRequest.query.filter(FaceshieldRequest.shipping_postalcode == None).all()
|
||||||
|
|
||||||
|
for data in places:
|
||||||
|
print(' * [%d] %s' % (data.id, data.entity_info,))
|
||||||
|
try:
|
||||||
|
results = requests.get('https://maps.googleapis.com/maps/api/place/findplacefromtext/json', params={
|
||||||
|
'input': data.entity_info,
|
||||||
|
'inputtype': 'textquery',
|
||||||
|
'fields': 'formatted_address',
|
||||||
|
'key': apikey,
|
||||||
|
}).json()
|
||||||
|
|
||||||
|
if results['status'] == 'OK':
|
||||||
|
address = results['candidates'][0]['formatted_address']
|
||||||
|
re_result = re.findall(r'^(.*), (\d{2}-\d{3}) (.*), Polska$', address)
|
||||||
|
if not re_result:
|
||||||
|
print(' -> unparseable', address)
|
||||||
|
else:
|
||||||
|
data.shipping_street, data.shipping_postalcode, data.shipping_city = re_result[0]
|
||||||
|
print(' -> saved', data.shipping_street, data.shipping_postalcode, data.shipping_city)
|
||||||
|
else:
|
||||||
|
print(' -> not found (%s)' % (results['status'],))
|
||||||
|
except Exception as exc:
|
||||||
|
print(' -> failed (%s)' % (exc,))
|
||||||
|
|
||||||
|
db.session.commit()
|
||||||
|
|
Loading…
Reference in New Issue