123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- """
- Piket server, handles events generated by the client.
- """
- from flask import Flask, jsonify, abort, request
- app = Flask("piket_server")
- @app.route("/ping")
- def ping() -> None:
- """ Return a status ping. """
- return "Pong"
- PRESET_NAMES = [
- "Maarten",
- "Knoepie Draggelsturf",
- "Teddy Veenlijk",
- "Chris Kraslot",
- "Knibbe Tjakkomans",
- "Foek Lammenschaap",
- ]
- PEOPLE = {
- index: {"id": index, "name": name, "count": 0}
- for index, name in enumerate(PRESET_NAMES)
- }
- NEXT_ID = len(PEOPLE)
- @app.route("/people", methods=["GET"])
- def get_people():
- """ Return a list of currently known people. """
- people = [p for p in PEOPLE.values()]
- people.sort(key=lambda p: p["name"])
- return jsonify(people=people)
- @app.route("/people/<int:person_id>", methods=["GET"])
- def get_person(person_id: int):
- person = PEOPLE.get(person_id)
- if not person:
- abort(404)
- return jsonify(person=person)
- @app.route("/people", methods=["POST"])
- def add_person():
- """
- Add a new person.
- Required parameters:
- - name (str)
- """
- global NEXT_ID
- data = request.get_json()
- if not data:
- abort(400)
- name = data.get("name")
- if not name:
- abort(400)
- person = {"id": NEXT_ID, "name": name, "count": 0}
- PEOPLE[NEXT_ID] = person
- NEXT_ID += 1
- return jsonify(person=person)
- @app.route("/people/<int:person_id>/add_consumption", methods=["POST"])
- def add_consumption(person_id: int):
- person = PEOPLE.get(person_id)
- if not person:
- abort(404)
- increment = int(request.form.get("amount", 1))
- person["count"] += increment
- return jsonify(person=person)
|