diff --git a/.gitignore b/.gitignore index e6a15fa..58d0c1e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .idea/ *.pyc venv/ +*.pickle +*.db \ No newline at end of file diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..7e78d9a --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +python 3.10.4 diff --git a/main.py b/main.py index f20f432..c9f4414 100644 --- a/main.py +++ b/main.py @@ -1,31 +1,45 @@ +import pickle +from datetime import datetime + +import humanize from flask import Flask, render_template, request, redirect, url_for +from os.path import exists app = Flask(__name__) class Person: - statusses = ["Pannenkoek besteld", "Pannenkoek aan het bakken", "Pannenkoek klaar", "Pannenkoek afgegeven"] + statusses = [ + "Pannenkoek besteld", + "Pannenkoek aan het bakken", + "Pannenkoek klaar", + "Pannenkoek afgegeven", + ] - def __init__(self, name, remark=""): + def __init__(self, name, remark="", order_time=None): self.name = name self.remark = remark.strip() self.status = 0 + self.order_time = order_time - def getRemark(self): + def get_remark(self): return "({})".format(self.remark) if self.remark else self.remark - def getName(self): + def get_name(self): return self.name def __eq__(self, other): return self.name.lower() == other.name.lower() - def getStatus(self): + def get_status(self): return self.statusses[self.status] - def nextStatus(self): + def next_status(self): return self.statusses[self.status + 1] + def order_time_humanized(self): + return humanize.naturaltime(self.order_time) + def __str__(self): return "Persoon: {} met status: {}".format(self.name, self.status) @@ -33,16 +47,28 @@ class Person: return str(self) +people_filename = "people.pickle" people = [] +if exists(people_filename): + people_file = open(people_filename, "rb") + people = pickle.load(people_file) + people_file.close() + + +def save_people(): + people_file = open(people_filename, "wb") + pickle.dump(people, people_file) + people_file.close() + @app.route("/") def home(): return render_template("home.html", people=people) -@app.route("/statusUpdate", methods=["POST", "GET"]) -def statusUpdate(): +@app.route("/status_update", methods=["POST", "GET"]) +def status_update(): if people and request.method == "POST": result = request.form if "index" in result: @@ -56,17 +82,21 @@ def statusUpdate(): people[index].status += 1 if people[index].status == 3: people.remove(people[index]) + save_people() return redirect("/") -@app.route("/addPerson", methods=["POST", "GET"]) -def addPerson(): +@app.route("/add_person", methods=["POST", "GET"]) +def add_person(): if request.method == "POST": result = request.form - if "name" in result: - newPerson = Person(result["name"], result["remark"]) - if newPerson not in people: - people.append(newPerson) + if result["name"]: + new_person = Person( + result["name"], result["remark"], order_time=datetime.now() + ) + if new_person not in people: + people.append(new_person) + save_people() return redirect("/") diff --git a/templates/home.html b/templates/home.html index 2c73561..0048f87 100644 --- a/templates/home.html +++ b/templates/home.html @@ -1,53 +1,82 @@ - + + + + + Pannenkoekenwachtrij - - Pannenkoekenwachtrij -
+

Welkom bij de pannenkoekenwachtrij

+
+
+ + +

+
-
-

Naam van de volgende

-

Specifieke opmerkingen

-

-
- -
- -

-
+
+ +

+
+

Zie hieronder de lijst van personen die een pannenkoek willen

-

Volgende Persoon:

- {% if people %} - - {{ people[0].getName() + people[0].getRemark() + ": " }} - {{ "Huidige status: " + people[0].getStatus() }} - - {% endif %} -

Andere Personen:

- {% for person in people[1:] %} + + + + + + + + + + + + + {% for person in people[:1] %} + + + - - {% endfor %} + + + + {% for person in people[1:] %} + + + + + + + {% endfor %} +
NameHuidige statusBestel tijd
Volgende persoon
{{ person.get_name() + person.get_remark() }}{{ person.get_status() }}{{ person.order_time_humanized() if person.order_time else "Unknown" }} -
- + +
{{ person.getName() + person.getRemark() + ": " }}{{ "Huidige status: " + person.getStatus() }}
Andere personen
{{ person.get_name() + person.get_remark() }}{{ person.get_status() }}{{ person.order_time_humanized() if person.order_time else "Unknown" }} +
+ + +
+
-
+