From 1f288bd58365ec9c90044b66d7c097263ff7a30e Mon Sep 17 00:00:00 2001 From: justine Date: Sat, 19 Mar 2022 12:48:54 +0100 Subject: [PATCH] Readmode, not accidental suppressions anymore --- data/notes.pickle | Bin 5 -> 20702 bytes docker-compose.yml | 2 +- src/app.py | 37 ++++++++++++++++++++++++++++++++++--- src/classes.py | 24 +++++++++++++++++++++--- src/funcs.py | 2 +- src/templates/edit.html | 3 ++- src/templates/read.html | 20 ++++++++++++++++++++ 7 files changed, 79 insertions(+), 9 deletions(-) create mode 100644 src/templates/read.html diff --git a/data/notes.pickle b/data/notes.pickle index 92c3c883eb886f2267599fa700ed581f787db7f2..da9301b3c7c7cacb9d0fb0ab352ac455176166a6 100644 GIT binary patch literal 20702 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 bkNr5+|7>q(Ptq;VWcMyYEH7TygQ)Z0+Rdnk literal 5 McmZo*iJhVc00ja8qyPW_ diff --git a/docker-compose.yml b/docker-compose.yml index 832f191..a141c7a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,7 +13,7 @@ services: #ports: #- 8080:8080 labels: - - "traefik.http.routers.sqnotes.rule=Host(`notes.sq.lan`)" + - "traefik.http.routers.sqnotes.rule=Host(`notes.squi.fr`)" - "traefik.http.services.sqnotes.loadbalancer.server.port=8080" - "traefik.docker.network=traefik_traefik" networks: diff --git a/src/app.py b/src/app.py index 8d8be04..9c737e5 100755 --- a/src/app.py +++ b/src/app.py @@ -18,7 +18,8 @@ def render(): #Delete has been clicked try: todelete = request.args.get("delete") - delnote(int(todelete)) + if todelete is not None: + delnote(int(todelete)) except Exception as e: pass @@ -29,6 +30,15 @@ def render(): return redirect(url_for('edit', notenumber=toedit)) except Exception as e: pass + + #Read has been clicked + try: + toread = request.args.get("toread") + if toread is not None: + return redirect(url_for('readmode', note=(int(toread)))) + except Exception as e: + print(e) + pass return render_template("homepage.html", nr = catnotes(getnotes())) @@ -37,15 +47,36 @@ def render(): def rawnotes(): return render_template("export.html", rawnotes = exportnotes()) +#Read mode +@app.route('/readmode', methods=['GET','POST']) +def readmode(): + if request.method == 'GET': + notenumber = request.args.get("note") + mynote = findnote(int(notenumber)) + return render_template("read.html", note=mynote.flaskrender()) + + #Edition mode @app.route('/edit', methods=['GET', 'POST']) def edit(): import time if request.method == "GET": + print("GET") notenumber = request.args.get("notenumber") mynote = findnote(int(notenumber)) - delnote(int(notenumber)) - return render_template("edit.html", notenumber=notenumber, ntitle=mynote.title, ntext=mynote.text) + return render_template("edit.html", notenumber=notenumber, ntitle=mynote.title, ntext=mynote.text) + if request.method == "POST": + print("POST") + print(request.args.get("submit")) + notetitle = request.form['title'] + notetext = request.form['text'] + notenumber = int(request.form['notenumber']) + delnote(notenumber) + rightnow = int(time.time()) + newnote = note(createtime=notenumber, modtime=rightnow, title=notetitle, text=notetext) + addnote(newnote) + return render_template("read.html", note=newnote.flaskrender()) + #Basic route, allows note creation @app.route('/', methods=['POST']) diff --git a/src/classes.py b/src/classes.py index f00b799..f3b6f69 100644 --- a/src/classes.py +++ b/src/classes.py @@ -26,9 +26,9 @@ class note: timestamp = timestamp.strftime("%d/%m/%Y-%H:%M:%S") return timestamp - def flaskrender(self): + def titlerender(self): """ - Render the note as html for flask, using flask.Markup + Render the note title and details as html for flask, using flask.Markup. """ import markdown from flask import Markup @@ -37,7 +37,25 @@ class note:
{Markup.escape(self.title)}
- | + || +
+
Created : {self.rendertime(self.createtime)} +
Modified : {self.rendertime(self.modtime)}

+ """ + return Markup(rendered) + + def flaskrender(self): + """ + Render the note whole content as html for flask, using flask.Markup + """ + import markdown + from flask import Markup, url_for + + rendered = f""" +
+
{Markup.escape(self.title)}
+
+ ||Back
Created : {self.rendertime(self.createtime)}
Modified : {self.rendertime(self.modtime)}

diff --git a/src/funcs.py b/src/funcs.py index bbd6d2d..3a32553 100644 --- a/src/funcs.py +++ b/src/funcs.py @@ -43,7 +43,7 @@ def catnotes(notelist: list): """ final = "" for note in notelist: - final += note.flaskrender() + final += note.titlerender() return final diff --git a/src/templates/edit.html b/src/templates/edit.html index 6e5684f..b66b6ef 100644 --- a/src/templates/edit.html +++ b/src/templates/edit.html @@ -9,9 +9,10 @@

$ ~/sqnotes

-
+

+
Note : you can drag the textbox to make it bigger.
diff --git a/src/templates/read.html b/src/templates/read.html new file mode 100644 index 0000000..56bace9 --- /dev/null +++ b/src/templates/read.html @@ -0,0 +1,20 @@ + + + + + + sqnotes + + + {{ note }} + +