diff --git a/app/__init__.py b/app/__init__.py index 17a0d41..66a844d 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -3,9 +3,28 @@ from flask_login import LoginManager from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate from yaml import safe_load +from logging import getLogger +from logging.config import fileConfig +from os import makedirs +from os.path import dirname, exists + +try: + dir_name = dirname(__file__) + if dir_name: + DIR = dir_name + "/" + else: + DIR = "./" +except NameError: + DIR = "./" + +if not exists(DIR + "logs"): + makedirs(DIR + "logs") + +fileConfig(DIR + "configs/log.conf") +LOGGER = getLogger("root") app = Flask(__name__) -app.config.from_file("config.yaml", safe_load) +app.config.from_file("configs/config.yaml", safe_load) db = SQLAlchemy(app) migrate = Migrate(app, db, render_as_batch=True) login = LoginManager(app) diff --git a/app/config.yaml.template b/app/config.yaml.template deleted file mode 100644 index e78695b..0000000 --- a/app/config.yaml.template +++ /dev/null @@ -1,6 +0,0 @@ -database: - host: "hostname or ip" - port: "port" - database: "databasename" - user: "username" - password: "password" \ No newline at end of file diff --git a/app/configs/config.yaml.template b/app/configs/config.yaml.template new file mode 100644 index 0000000..670149d --- /dev/null +++ b/app/configs/config.yaml.template @@ -0,0 +1,3 @@ +SECRET_KEY: "MY_5€cr37_K€Y" +SQLALCHEMY_DATABASE_URI: "dialect+driver://username:password@host:port/database" +SQLALCHEMY_TRACK_MODIFICATIONS: False \ No newline at end of file diff --git a/app/configs/log.conf b/app/configs/log.conf new file mode 100644 index 0000000..7df15ac --- /dev/null +++ b/app/configs/log.conf @@ -0,0 +1,31 @@ +[loggers] +keys=root, main + +[handlers] +keys=console, file + +[formatters] +keys=stdout + +[logger_root] +handlers = console, file +level = DEBUG + +[logger_main] +handlers = console, file +level = DEBUG +qualname = main + +[handler_console] +class = logging.StreamHandler +level = DEBUG +formatter = stdout + +[handler_file] +class = logging.FileHandler +level = INFO +formatter = stdout +kwargs = {"filename": "app/logs/infos.log"} + +[formatter_stdout] +format = %(asctime)s [%(threadName)s] [%(levelname)s]: %(message)s \ No newline at end of file diff --git a/app/database.py b/app/database.py index e2e51c3..74776fb 100644 --- a/app/database.py +++ b/app/database.py @@ -1,24 +1,6 @@ -from os.path import dirname +from app import LOGGER from psycopg2 import connect as psyconn, ProgrammingError, errors from yaml import safe_load -import logging - - -DIR = dirname(__file__) + "/" - -LOGGER = logging.getLogger(__name__) -LOGGER.setLevel(logging.DEBUG) -logFormatter = logging.Formatter( - "%(asctime)s [%(threadName)s] [%(levelname)s] %(message)s") - -fileHandler = logging.FileHandler(DIR + "../../logs/database.log") -fileHandler.setFormatter(logFormatter) -fileHandler.setLevel(logging.INFO) -LOGGER.addHandler(fileHandler) - -consoleHandler = logging.StreamHandler() -consoleHandler.setLevel(logging.DEBUG) -LOGGER.addHandler(consoleHandler) class Database: @@ -27,7 +9,7 @@ class Database: pass def connect(self, **kwargs): - with open(DIR + 'config.yaml', 'r') as file: + with open('configs/config.yaml', 'r') as file: data = safe_load(file)['database'] LOGGER.debug('Merging passed arguments with default arguments.') for key, value in data.items(): diff --git a/app/views.py b/app/views.py index 97dadf3..717cfb1 100644 --- a/app/views.py +++ b/app/views.py @@ -1,31 +1,8 @@ -from app import app +from app import app, LOGGER from app.database import Database from app.forms import NewItemForm from flask import abort, request, render_template from flask.json import jsonify -from os import makedirs -from os.path import dirname, exists -import logging - - -DIR = dirname(__file__) + "/" - -if not exists(DIR + "../../logs"): - makedirs(DIR + "../../logs") - -LOGGER = logging.getLogger(__name__) -LOGGER.setLevel(logging.DEBUG) -logFormatter = logging.Formatter( - "%(asctime)s [%(threadName)s] [%(levelname)s] %(message)s") - -fileHandler = logging.FileHandler(DIR + "../../logs/server.log") -fileHandler.setFormatter(logFormatter) -fileHandler.setLevel(logging.INFO) -LOGGER.addHandler(fileHandler) - -consoleHandler = logging.StreamHandler() -consoleHandler.setLevel(logging.DEBUG) -LOGGER.addHandler(consoleHandler) DATABASE = Database() @@ -38,6 +15,8 @@ def index(): @app.route('/test') def test(): + if request.args: + LOGGER.debug(request.args['testing']) form = NewItemForm() return render_template("test.html", form=form) @@ -67,11 +46,15 @@ def insert(): case _: abort(400) -@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): +@app.route(f'/{APPNAME}/overview', methods=['GET']) +def get_report_from_user(): + user, month, year = []*3 + if request.args: + args = request.args + if 'month' in args: + month = args['month'] + if 'year' in args: + year = args['year'] if month and (month > 12 or month < 1): abort(400) LOGGER.info("Getting results.")