webinterface (WIP)

This commit is contained in:
fordprefect
2020-03-26 18:00:10 +01:00
2 changed files with 64 additions and 3 deletions

View File

@@ -13,10 +13,10 @@
This form allows you to perform a search of the Open Street Map database (via Nominatim) and exports all results as Waypoints in a GPX file. This form allows you to perform a search of the Open Street Map database (via Nominatim) and exports all results as Waypoints in a GPX file.
<form action=search.py method=post> <form action=websearch.py method=post>
<input name=query placeholder=Camping></input> Your search query<br> <input name=query placeholder=Camping></input> Your search query<br>
<input type= name=></input> (optional)<br> <input name=malicious></input> (optional)<br>
<input type= name=></input> (optional)<br> <input name=url></input> (optional)<br>
<input name= ></input> (optional)<br> <input name= ></input> (optional)<br>
<input type=submit name="Submit"><br> <input type=submit name="Submit"><br>
</form> </form>

61
websearch.py Executable file
View File

@@ -0,0 +1,61 @@
#!/usr/bin/python
"""
CGI interface to osmsearch.py
"""
__author__ = "fordprefect"
__date__ = "2020-03-26"
__version__ = "0.1"
print("Content-type: text/html\n") # makes sure the http connection does not die - do nothing before this!
import cgi
import pathvalidate
import osmsearch
import sys
assert sys.version_info >= (3, 6), "At least Python 3.8 required due to fStrings. Replace all f\"\" and comment this line to enable running in lower versions (but really, you should just update your Python version…)."
#####################################
######## configuration
#####################################
# default set of arguments
args = {
"q": "Camping",
"format": "json",
"limit": 50,
"use_boundingbox": False,
"boundingbox": [],
"outputfilename": None,
"ignore_ids": [],
"maxsearchnums": 10,
"url": "https://nominatim.openstreetmap.org/search/",
}
immutable_args = ["format", "outputfilename", "url",]
#####################################
######## end of configuration
#####################################
def get_arguments():
"""Wrapper for cgi-environment.
Takes no options, returns dict of arguments
"""
args = cgi.FieldStorage()
return {i: args.getvalue(i) for i in args}
# get cgi args and sanitize
cgi_args = get_arguments()
parsed_args = {}
try:
cgi_args["q"] = pathvalidate.sanitize_filename(cgi_args["query"])
except KeyError:
# no key called "query" found, abort
exit()
for arg in cgi_args:
if arg not in immutable_args and arg in args:
parsed_args[arg] = cgi_args[arg]
print(parsed_args, " parsed")
args.update(cgi_args)
#status = osmsearch.conduct_search(args)