diff --git a/README.md b/README.md index 5aefd61..406158e 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,6 @@ This is a *very* basic notes-taking program. It uses python with flask and pickl ![Screenshot of the application](./squipnotes.png) ## Future features, todo -* Allow for notes modification and deletion * A squirrel ascii picture somewhere in the page :3 * Less ugly colors and font * Better syntax coloring and markdown rendering in general diff --git a/squipnotes.png b/squipnotes.png index 1d9d793..4f551b0 100644 Binary files a/squipnotes.png and b/squipnotes.png differ diff --git a/src/app.py b/src/app.py index af16603..f05e0ea 100755 --- a/src/app.py +++ b/src/app.py @@ -1,13 +1,13 @@ #!/usr/bin/env python3 #coding: utf-8 -from flask import Flask, render_template, Markup, request +from flask import Flask, render_template, Markup, request, redirect, url_for import markdown #!---------- squiNotes.py ---------- # My notes-taking app #-----------------------------! - +#CLASS class note: def __init__(self, createtime: int, modtime: int, title: str, text: str): """ @@ -36,22 +36,17 @@ class note:
{Markup.escape(self.title)}

Created : {self.rendertime(self.createtime)} Modified : {self.rendertime(self.modtime)}

-
{markdown.markdown(self.text)}

""" +
{markdown.markdown(self.text)}

+
+ +

+ """ return Markup(rendered) def __str__(self): return self.title -def catnotes(notelist: list): - """ - Concatenate a list of notes into a str. - """ - final = "" - for note in notelist: - final += note.flaskrender() - - return final - +#FUNC def dumpnotes(notes): """ Get our notes list and save them as pickle to notes.pickle @@ -77,6 +72,46 @@ def getnotes(): return notes +def catnotes(notelist: list): + """ + Concatenate a list of notes into a str. + """ + final = "" + for note in notelist: + final += note.flaskrender() + + return final + +def delnote(timestamp: int): + """ + Delete note in our pickle file for which the createtime corresponds to timestamp + """ + notes = getnotes() + for note in notes: + if int(note.createtime) == int(timestamp): + notes.remove(note) + dumpnotes(notes) + return True + return False + +def findnote(createtime: int): + """ + Find a note in our pickle file of notes by its createtime + """ + notes = getnotes() + for note in notes: + if note.createtime == createtime: + return note + +def addnote(mynote: note): + """ + Add a note to our notes pickle file (and sort it). + """ + notes = getnotes() + notes.append(mynote) + notes = sorted(notes, key=lambda note: note.modtime, reverse=True) + dumpnotes(notes) + #----------! MAIN @@ -84,22 +119,49 @@ app = Flask(__name__) @app.route('/', methods=['GET']) def render(): + #Delete has been clicked + try: + todelete = request.args.get("delete") + delnote(int(todelete)) + except Exception as e: + pass + + #Edit has been clicked + try: + toedit = request.args.get("edit") + if toedit is not None: + return redirect(url_for('edit', notenumber=toedit)) + except Exception as e: + pass + return render_template("homepage.html", nr = catnotes(getnotes())) +#Edition mode +@app.route('/edit', methods=['GET', 'POST']) +def edit(): + import time + if request.method == "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) + +#Basic route, allows note creation @app.route('/', methods=['POST']) def homepage(): import time - notetitle = request.form['title'] - notetext = request.form['text'] - rightnow = int(time.time()) - newnote = note(createtime=rightnow, modtime=rightnow, title=notetitle, text=notetext) - notes = getnotes() - notes.append(newnote) - notes = sorted(notes, key=lambda note: note.modtime, reverse=True) - dumpnotes(notes) + #New note + try: + notetitle = request.form['title'] + notetext = request.form['text'] + rightnow = int(time.time()) + newnote = note(createtime=rightnow, modtime=rightnow, title=notetitle, text=notetext) + addnote(newnote) + except: + pass return render_template("homepage.html", nr = catnotes(getnotes())) if __name__ == '__main__': - app.run() + app.run(host="0.0.0.0") diff --git a/src/notes.pickle b/src/notes.pickle index 99f2adc..d7986a6 100644 Binary files a/src/notes.pickle and b/src/notes.pickle differ diff --git a/src/requirements.txt b/src/requirements.txt index 8c6a035..b7e737c 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -1 +1,2 @@ flask>=2.0.3 +markdown>=3.3.5 diff --git a/src/templates/edit.html b/src/templates/edit.html new file mode 100644 index 0000000..ce414b6 --- /dev/null +++ b/src/templates/edit.html @@ -0,0 +1,28 @@ + + + + + + squip_notes + + + +

$ ~/squip_notes

+
+
+
+
+ +
+ + You are editing {{ notenumber }}
+ +
+ {{ nr }} +
+ + + + +