summaryrefslogtreecommitdiff
path: root/utab/__main__.py
diff options
context:
space:
mode:
Diffstat (limited to 'utab/__main__.py')
-rw-r--r--utab/__main__.py23
1 files changed, 18 insertions, 5 deletions
diff --git a/utab/__main__.py b/utab/__main__.py
index df92dbc..6dddd0b 100644
--- a/utab/__main__.py
+++ b/utab/__main__.py
@@ -72,13 +72,12 @@ def index():
@app.route("/go/<path:url>")
def visit_site(url):
# log this visit, then redirect to the unescaped url
- url_unesc = urllib.parse.unquote(url) # unescaped url
sites = read_sites()
for i, s in enumerate(sites):
- if s[URL] == url_unesc:
+ if s[URL] == url:
sites[i][VISITS] = str(int(sites[i][VISITS]) + 1)
write_sites(sites)
- return redirect(url_unesc, 302)
+ return redirect(url, 302)
return abort(404)
@@ -113,9 +112,11 @@ def add_site():
site_form,
site_heading="Add site",
url="https://",
+ url_esc="",
title="",
favicon_src="",
favicon_placeholder="Leave blank to auto-retrieve favicon. Base64 is allowed.",
+ delete_button_visibility="hidden",
action="new",
)
@@ -127,10 +128,9 @@ def edit_site(url):
# /edit/<escaped_url>?url=<escaped_new_url>&... => edit this site in database
if not url:
return redirect("/edit", 301)
- url_unesc = urllib.parse.unquote(url)
sites = read_sites()
for i, s in enumerate(sites):
- if s[URL] == url_unesc:
+ if s[URL] == url:
new_url, new_title, new_favicon = (
request.args.get("url"),
request.args.get("title"),
@@ -141,9 +141,11 @@ def edit_site(url):
site_form,
site_heading="Edit site",
url=s[URL],
+ url_esc=urllib.parse.quote(s[URL], safe=""),
title=s[TITLE],
favicon_src=s[FAVICON],
favicon_placeholder="Base64 is allowed.",
+ delete_button_visibility="visible",
action="edit/" + urllib.parse.quote(s[URL], safe=""),
)
sites[i][URL] = new_url
@@ -165,6 +167,17 @@ def select_site_to_edit():
)
+@app.route("/delete/<path:url>")
+def delete_site(url):
+ sites = read_sites()
+ for i, s in enumerate(sites):
+ if s[URL] == url:
+ sites = sites[:i] + sites[i + 1 :]
+ write_sites(sites)
+ return redirect("/", 302)
+ return "No site with such URL exists", 403
+
+
@app.route("/css/<string:filename>")
def serve_css(filename):
# serve static CSS because browsers forbid file:// scheme