Merge pull request #1 from Lunaresk:new_folder_structure
New_folder_structure
This commit is contained in:
commit
f184a2493f
3
.gitignore
vendored
3
.gitignore
vendored
@ -130,4 +130,5 @@ dmypy.json
|
||||
|
||||
# Misc
|
||||
config.yaml
|
||||
scans.json
|
||||
scans.json
|
||||
test.*
|
||||
5
server/src/app/__init__.py
Normal file
5
server/src/app/__init__.py
Normal file
@ -0,0 +1,5 @@
|
||||
from flask import Flask
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
from app import views
|
||||
@ -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)
|
||||
15
server/src/app/templates/base.html
Normal file
15
server/src/app/templates/base.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
|
||||
</body>
|
||||
</html>
|
||||
27
server/src/app/templates/overview.html
Normal file
27
server/src/app/templates/overview.html
Normal file
@ -0,0 +1,27 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
{% for user, dates in results.items() %}
|
||||
<div class="row">
|
||||
<h3>{{ user }}: {{ dates.sum }}€</h3>
|
||||
{% for date, items in dates.items() %}
|
||||
{% if date != "sum" %}
|
||||
<div class="row">
|
||||
<div class="col-sm-1"></div>
|
||||
<div class="col">
|
||||
<h4>{{ date }}</h4>
|
||||
{% for item, values in items.items() %}
|
||||
<div class="row">
|
||||
<div class="col-sm-1"></div>
|
||||
<div class="col">
|
||||
{{ values.0 }}x {{ item }} je {{ values.1 }}€
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
@ -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 "<h1>Hello, World!</h>", 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/<string:user>', methods=['GET'])
|
||||
@app.route('/scan2kasse/<int:year>/<int:month>', methods=['GET'])
|
||||
@app.route('/scan2kasse/<string:user>/<int:year>', methods=['GET'])
|
||||
@app.route('/scan2kasse/<string:user>/<int:year>/<int:month>', methods=['GET'])
|
||||
@app.route(f'/{APPNAME}/<string:user>', methods=['GET'])
|
||||
@app.route(f'/{APPNAME}/<int:year>/<int:month>', methods=['GET'])
|
||||
@app.route(f'/{APPNAME}/<string:user>/<int:year>', methods=['GET'])
|
||||
@app.route(f'/{APPNAME}/<string:user>/<int:year>/<int:month>', 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
|
||||
6
server/src/run.py
Normal file
6
server/src/run.py
Normal file
@ -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()
|
||||
Loading…
x
Reference in New Issue
Block a user