From e3ccf1129fef6011124cc93eb7981513e28d9f98 Mon Sep 17 00:00:00 2001 From: Frederick Yin Date: Sun, 5 Jul 2020 14:57:19 +0800 Subject: Delete site --- utab/__main__.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'utab/__main__.py') 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/") 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/?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/") +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/") def serve_css(filename): # serve static CSS because browsers forbid file:// scheme -- cgit v1.2.3