diff --git a/.gitignore b/.gitignore
index 42dca0e..e6b9528 100644
--- a/.gitignore
+++ b/.gitignore
@@ -130,4 +130,5 @@ dmypy.json
# Misc
config.yaml
-scans.json
\ No newline at end of file
+scans.json
+test.*
\ No newline at end of file
diff --git a/server/src/app/__init__.py b/server/src/app/__init__.py
new file mode 100644
index 0000000..b9357d3
--- /dev/null
+++ b/server/src/app/__init__.py
@@ -0,0 +1,5 @@
+from flask import Flask
+
+app = Flask(__name__)
+
+from app import views
\ No newline at end of file
diff --git a/server/src/database.py b/server/src/app/database.py
similarity index 98%
rename from server/src/database.py
rename to server/src/app/database.py
index bd9f083..e2e51c3 100644
--- a/server/src/database.py
+++ b/server/src/app/database.py
@@ -11,7 +11,7 @@ LOGGER.setLevel(logging.DEBUG)
logFormatter = logging.Formatter(
"%(asctime)s [%(threadName)s] [%(levelname)s] %(message)s")
-fileHandler = logging.FileHandler(DIR + "../logs/database.log")
+fileHandler = logging.FileHandler(DIR + "../../logs/database.log")
fileHandler.setFormatter(logFormatter)
fileHandler.setLevel(logging.INFO)
LOGGER.addHandler(fileHandler)
diff --git a/server/src/app/templates/base.html b/server/src/app/templates/base.html
new file mode 100644
index 0000000..3f54057
--- /dev/null
+++ b/server/src/app/templates/base.html
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+ {% block content %}{% endblock %}
+
+
+
+
\ No newline at end of file
diff --git a/server/src/app/templates/overview.html b/server/src/app/templates/overview.html
new file mode 100644
index 0000000..5930484
--- /dev/null
+++ b/server/src/app/templates/overview.html
@@ -0,0 +1,27 @@
+{% extends "base.html" %}
+
+{% block content %}
+ {% for user, dates in results.items() %}
+
+
{{ user }}: {{ dates.sum }}€
+ {% for date, items in dates.items() %}
+ {% if date != "sum" %}
+
+
+
+
{{ date }}
+ {% for item, values in items.items() %}
+
+
+
+ {{ values.0 }}x {{ item }} je {{ values.1 }}€
+
+
+ {% endfor %}
+
+
+ {% endif %}
+ {% endfor %}
+
+ {% endfor %}
+{% endblock %}
\ No newline at end of file
diff --git a/server/src/main.py b/server/src/app/views.py
similarity index 73%
rename from server/src/main.py
rename to server/src/app/views.py
index 719796d..a8239d8 100644
--- a/server/src/main.py
+++ b/server/src/app/views.py
@@ -1,7 +1,7 @@
-from database import Database
-from flask import Flask, abort, request
+from app import app
+from app.database import Database
+from flask import abort, request, render_template
from flask.json import jsonify
-from gevent.pywsgi import WSGIServer
from os import makedirs
from os.path import dirname, exists
import logging
@@ -17,7 +17,7 @@ LOGGER.setLevel(logging.DEBUG)
logFormatter = logging.Formatter(
"%(asctime)s [%(threadName)s] [%(levelname)s] %(message)s")
-fileHandler = logging.FileHandler(DIR + "../logs/server.log")
+fileHandler = logging.FileHandler(DIR + "../../logs/server.log")
fileHandler.setFormatter(logFormatter)
fileHandler.setLevel(logging.INFO)
LOGGER.addHandler(fileHandler)
@@ -26,16 +26,17 @@ consoleHandler = logging.StreamHandler()
consoleHandler.setLevel(logging.DEBUG)
LOGGER.addHandler(consoleHandler)
-app = Flask(__name__)
DATABASE = Database()
+APPNAME = "scan2kasse"
+
@app.route('/')
def index():
return "Hello, World!", 200
-@app.route('/scan2kasse/login')
+@app.route(f'/{APPNAME}/login')
def login():
if not request.json or 'login' not in request.json:
abort(400)
@@ -44,7 +45,7 @@ def login():
return jsonify({}), 200
-@app.route('/scan2kasse/insert', methods=['POST'])
+@app.route(f'/{APPNAME}/insert', methods=['POST'])
def insert():
match request.json:
case {'user': user, 'items': items, 'date': date}:
@@ -60,10 +61,10 @@ def insert():
case _:
abort(400)
-@app.route('/scan2kasse/', methods=['GET'])
-@app.route('/scan2kasse//', methods=['GET'])
-@app.route('/scan2kasse//', methods=['GET'])
-@app.route('/scan2kasse///', methods=['GET'])
+@app.route(f'/{APPNAME}/', methods=['GET'])
+@app.route(f'/{APPNAME}//', methods=['GET'])
+@app.route(f'/{APPNAME}//', methods=['GET'])
+@app.route(f'/{APPNAME}///', methods=['GET'])
def get_monthly_report_from_user(user: str = None, year: int = None, month: int = None):
if month and (month > 12 or month < 1):
abort(400)
@@ -74,7 +75,10 @@ def get_monthly_report_from_user(user: str = None, year: int = None, month: int
result_dict = group_results(results)
else:
result_dict = {}
- return jsonify(result_dict)
+ if request.content_type == "application/json":
+ return jsonify(result_dict)
+ else:
+ return render_template("overview.html", results=result_dict)
def group_results(results: tuple) -> dict:
@@ -82,15 +86,11 @@ def group_results(results: tuple) -> dict:
LOGGER.debug("Grouping...")
for result in results:
if result[0] not in result_dict:
- result_dict[result[0]] = {}
+ result_dict[result[0]] = {"sum": 0}
if str(result[1]) not in result_dict[result[0]]:
result_dict[result[0]][str(result[1])] = {}
result_dict[result[0]][str(result[1])][result[2]] = (
result[3], result[4])
+ result_dict[result[0]]["sum"] += (result[3] * (result[4] * 100)) / 100
LOGGER.debug("Grouped.")
- return result_dict
-
-
-if __name__ == '__main__':
- http_server = WSGIServer(('', 5000), app)
- http_server.serve_forever()
+ return result_dict
\ No newline at end of file
diff --git a/server/src/run.py b/server/src/run.py
new file mode 100644
index 0000000..858949c
--- /dev/null
+++ b/server/src/run.py
@@ -0,0 +1,6 @@
+from app import app
+from gevent.pywsgi import WSGIServer
+
+if __name__ == '__main__':
+ http_server = WSGIServer(('', 5000), app)
+ http_server.serve_forever()