parent
3b81bc0d96
commit
d425133423
|
@ -3,6 +3,7 @@
|
||||||
import random
|
import random
|
||||||
import typing
|
import typing
|
||||||
|
|
||||||
|
import sqlalchemy.exc
|
||||||
from flask import Flask, jsonify, redirect, render_template, request, url_for
|
from flask import Flask, jsonify, redirect, render_template, request, url_for
|
||||||
from sqlalchemy.orm.query import Query
|
from sqlalchemy.orm.query import Query
|
||||||
from werkzeug.wrappers import Response
|
from werkzeug.wrappers import Response
|
||||||
|
@ -168,9 +169,16 @@ def redirect_to_detail(q: str) -> Response:
|
||||||
return redirect(url_for("detail_page", lat=lat, lon=lon))
|
return redirect(url_for("detail_page", lat=lat, lon=lon))
|
||||||
|
|
||||||
|
|
||||||
|
@app.errorhandler(sqlalchemy.exc.OperationalError)
|
||||||
|
def handle_database_error(error: Exception) -> tuple[str, int]:
|
||||||
|
"""Show error screen on database error."""
|
||||||
|
return render_template("database_error.html"), 500
|
||||||
|
|
||||||
|
|
||||||
@app.route("/")
|
@app.route("/")
|
||||||
def index() -> str | Response:
|
def index() -> str | Response:
|
||||||
"""Index page."""
|
"""Index page."""
|
||||||
|
database.session.execute("SELECT 1")
|
||||||
q = request.args.get("q")
|
q = request.args.get("q")
|
||||||
if q and q.strip():
|
if q and q.strip():
|
||||||
return redirect_to_detail(q)
|
return redirect_to_detail(q)
|
||||||
|
@ -242,6 +250,7 @@ def build_detail_page(lat: float, lon: float) -> str:
|
||||||
@app.route("/detail")
|
@app.route("/detail")
|
||||||
def detail_page() -> Response | str:
|
def detail_page() -> Response | str:
|
||||||
"""Detail page."""
|
"""Detail page."""
|
||||||
|
database.session.execute("SELECT 1")
|
||||||
try:
|
try:
|
||||||
lat_str, lon_str = request.args["lat"], request.args["lon"]
|
lat_str, lon_str = request.args["lat"], request.args["lon"]
|
||||||
lat, lon = float(lat_str), float(lon_str)
|
lat, lon = float(lat_str), float(lon_str)
|
||||||
|
|
17
templates/database_error.html
Normal file
17
templates/database_error.html
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}Geocode to Commons: database error{% endblock %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="m-3">
|
||||||
|
<h1>Geocode coordinates to Commons Category</h1>
|
||||||
|
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
Error: database connection not available.
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
Loading…
Reference in a new issue