Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
ea2b3c18d8 Show Nominatim 403 error to user in Web UI
Closes #5

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-18 19:41:31 +00:00
0d2cfd56cb Add missing create_db.py script 2024-08-28 08:17:05 +00:00
3 changed files with 41 additions and 1 deletions

35
create_db.py Executable file
View file

@ -0,0 +1,35 @@
#!/usr/bin/python3
from sqlalchemy.schema import CreateIndex, CreateTable
from matcher import database, model
DB_URL = "postgresql:///matcher"
database.init_db(DB_URL)
def create_db():
model.Base.metadata.create_all(database.session.get_bind())
def print_create_table(classes):
database.init_db(DB_URL)
engine = database.session.get_bind()
for cls in classes:
sql = str(CreateTable(cls.__table__).compile(engine))
print(sql.strip() + ";")
for index in cls.__table__.indexes:
sql = str(CreateIndex(index).compile(engine))
print(sql.strip() + ";")
# print_create_table([model.ItemIsA])
# print_create_table([model.EditSession])
# print_create_table([model.Changeset, model.ChangesetEdit, model.SkipIsA])
# print_create_table([model.User])
# print_create_table([model.Extract])
create_db()

View file

@ -31,6 +31,8 @@ def lookup_with_params(**kwargs: str) -> list[Hit]:
r = requests.get(url, params=params, headers=user_agent_headers())
if r.status_code == 500:
raise SearchError
if r.status_code == 403:
raise SearchError("Nominatim returned 403 Forbidden")
try:
reply: list[Hit] = json.loads(r.text, object_pairs_hook=OrderedDict)

View file

@ -653,7 +653,10 @@ def api_missing_wikidata_items():
@app.route("/api/1/search")
def api_search():
q = flask.request.args["q"]
hits = nominatim.lookup(q)
try:
hits = nominatim.lookup(q)
except nominatim.SearchError as e:
return cors_jsonify({"success": False, "error": str(e)}, 503)
for hit in hits:
hit["name"] = nominatim.get_hit_name(hit)
hit["label"] = nominatim.get_hit_label(hit)