diff options
| -rw-r--r-- | fietsboek/views/profile.py | 12 | 
1 files changed, 11 insertions, 1 deletions
| diff --git a/fietsboek/views/profile.py b/fietsboek/views/profile.py index a08fad7..9f68d2f 100644 --- a/fietsboek/views/profile.py +++ b/fietsboek/views/profile.py @@ -1,6 +1,7 @@  """Endpoints for the user profile pages."""  import datetime  import sqlite3 +import urllib.parse  from dataclasses import dataclass  from typing import Optional @@ -192,7 +193,16 @@ def user_tile(request: Request) -> Response:      if path is None:          return HTTPNotFound() -    connection = sqlite3.connect(path) +    # See +    # https://docs.python.org/3/library/sqlite3.html#how-to-work-with-sqlite-uris +    # https://stackoverflow.com/questions/10205744/opening-sqlite3-database-from-python-in-read-only-mode +    # https://stackoverflow.com/questions/17170202/dont-want-to-create-a-new-database-if-it-doesnt-already-exists +    sqlite_uri = urllib.parse.urlunparse(("file", "", str(path), "", "mode=ro", "")) +    try: +        connection = sqlite3.connect(sqlite_uri, uri=True) +    except sqlite3.OperationalError: +        return HTTPNotFound() +      cursor = connection.cursor()      result = cursor.execute(          "SELECT data FROM tiles WHERE zoom = ? AND x = ? AND y = ?;", | 
