forked from edward/owl-map
Add types and docstrings + upgrade to SQLAlchmey 2
This commit is contained in:
parent
82671959bb
commit
5e8d1a99b0
8 changed files with 248 additions and 125 deletions
|
|
@ -1,14 +1,17 @@
|
|||
from flask import g
|
||||
from . import user_agent_headers, database, osm_oauth, mail
|
||||
from .model import Changeset
|
||||
import requests
|
||||
import html
|
||||
|
||||
import requests
|
||||
from flask import g
|
||||
|
||||
from . import database, mail, osm_oauth, user_agent_headers
|
||||
from .model import Changeset
|
||||
|
||||
really_save = True
|
||||
osm_api_base = "https://api.openstreetmap.org/api/0.6"
|
||||
|
||||
|
||||
def new_changeset(comment: str) -> str:
|
||||
"""XML for a new changeset."""
|
||||
return f"""
|
||||
<osm>
|
||||
<changeset>
|
||||
|
|
@ -18,11 +21,12 @@ def new_changeset(comment: str) -> str:
|
|||
</osm>"""
|
||||
|
||||
|
||||
def osm_request(path, **kwargs):
|
||||
def osm_request(path, **kwargs) -> requests.Response:
|
||||
return osm_oauth.api_put_request(path, **kwargs)
|
||||
|
||||
|
||||
def create_changeset(changeset):
|
||||
def create_changeset(changeset: str) -> requests.Response:
|
||||
"""Create new changeset."""
|
||||
try:
|
||||
return osm_request("/changeset/create", data=changeset.encode("utf-8"))
|
||||
except requests.exceptions.HTTPError as r:
|
||||
|
|
@ -31,11 +35,15 @@ def create_changeset(changeset):
|
|||
raise
|
||||
|
||||
|
||||
def close_changeset(changeset_id):
|
||||
def close_changeset(changeset_id: int) -> requests.Response:
|
||||
"""Close changeset."""
|
||||
return osm_request(f"/changeset/{changeset_id}/close")
|
||||
|
||||
|
||||
def save_element(osm_type, osm_id, element_data):
|
||||
def save_element(
|
||||
osm_type: str, osm_id: int, element_data: str
|
||||
) -> requests.Response | None:
|
||||
"""Upload new version of object to OSM map."""
|
||||
osm_path = f"/{osm_type}/{osm_id}"
|
||||
r = osm_request(osm_path, data=element_data)
|
||||
reply = r.text.strip()
|
||||
|
|
@ -56,9 +64,12 @@ error:
|
|||
|
||||
mail.send_mail(subject, body)
|
||||
|
||||
return None
|
||||
|
||||
def record_changeset(**kwargs):
|
||||
change = Changeset(created=database.now_utc(), **kwargs)
|
||||
|
||||
def record_changeset(**kwargs: str) -> Changeset:
|
||||
"""Record changeset in the database."""
|
||||
change: Changeset = Changeset(created=database.now_utc(), **kwargs)
|
||||
|
||||
database.session.add(change)
|
||||
database.session.commit()
|
||||
|
|
@ -66,6 +77,7 @@ def record_changeset(**kwargs):
|
|||
return change
|
||||
|
||||
|
||||
def get_existing(osm_type, osm_id):
|
||||
def get_existing(osm_type: str, osm_id: int) -> requests.Response:
|
||||
"""Get existing OSM object."""
|
||||
url = f"{osm_api_base}/{osm_type}/{osm_id}"
|
||||
return requests.get(url, headers=user_agent_headers())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue