diff --git a/app/src/web/log_files.py b/app/src/web/log_files.py new file mode 100644 index 0000000..82fe0c4 --- /dev/null +++ b/app/src/web/log_files.py @@ -0,0 +1,52 @@ +from quart import render_template +from quart_babel import format_datetime, format_decimal +from quart.helpers import send_from_directory +from werkzeug.utils import secure_filename +from cnf.config import Config +import os + +from . import web + + +def _get_file(file): + '''build one row for the connection table''' + entry = {} + entry['name'] = file.name + stat = file.stat() + entry['size'] = format_decimal(stat.st_size) + entry['date'] = stat.st_mtime + entry['created'] = format_datetime(stat.st_ctime, format="short") + entry['modified'] = format_datetime(stat.st_mtime, format="short") + return entry + + +def get_list_data(): + '''build the connection table''' + file_list = [] + with os.scandir(Config.get_log_path()) as it: + for entry in it: + if entry.is_file(): + file_list.append(_get_file(entry)) + + file_list.sort(key=lambda x: x['date'], reverse=True) + return file_list + + +@web.route('/file-fetch') +async def file_fetch(): + data = { + "update-time": format_datetime(format="medium"), + } + data["file-list"] = await render_template('templ_log_files_list.html.j2', + dir_list=get_list_data()) + + data["notes-list"] = await render_template('templ_notes_list.html.j2') + return data + + +@web.route('/send-file/') +async def send(file): + return await send_from_directory( + directory=Config.get_log_path(), + file_name=secure_filename(file), + as_attachment=True)