From 47ab99f89149352a94ebcebd034d034048881812 Mon Sep 17 00:00:00 2001 From: mg Date: Wed, 26 Apr 2023 19:51:53 +0200 Subject: add web-ui (#2) Co-authored-by: Michael Grote Reviewed-on: https://git.mgrote.net/mg/python-api-server/pulls/2 --- app.py | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'app.py') diff --git a/app.py b/app.py index dd49463..d21b092 100644 --- a/app.py +++ b/app.py @@ -1,14 +1,16 @@ import os import re import uuid -from flask import Flask, request, jsonify, send_from_directory +from flask import Flask, request, jsonify, send_from_directory, render_template import datetime from flasgger import Swagger, swag_from -app = Flask(__name__) +app = Flask(__name__, template_folder='templates') swagger = Swagger(app) app.config['UPLOAD_DIRECTORY'] = os.environ.get('UPLOAD_DIRECTORY', '/uploads') app.config['MAX_CONTENT_LENGTH'] = int(os.environ.get('MAX_CONTENT_LENGTH', '5')) * 1024 * 1024 # in MB +app.config['ENABLE_WEBSERVER'] = os.getenv('ENABLE_WEBSERVER', 'True').lower() == 'true' + VALID_FILENAME_REGEX = r'^[a-zA-Z0-9\-_\.]+$' @@ -17,6 +19,27 @@ AUTH_TOKEN = os.environ.get('AUTH_TOKEN', 'myuploadtoken') def is_valid_filename(filename): return bool(re.match(VALID_FILENAME_REGEX, filename)) +if app.config['ENABLE_WEBSERVER']: + @app.route('/', methods=['GET']) + def file_list(): + """ + Endpoint for displaying a list of files in the upload directory. + """ + files = [] + for filename in os.listdir(app.config['UPLOAD_DIRECTORY']): + file_path = os.path.join(app.config['UPLOAD_DIRECTORY'], filename) + if os.path.isfile(file_path): + stats = os.stat(file_path) + size = stats.st_size + last_modified = datetime.datetime.fromtimestamp(stats.st_mtime).strftime('%Y-%m-%d %H:%M:%S') + files.append({ + 'name': filename, + 'size': size, + 'last_modified': last_modified + }) + + return render_template('file_list.html', files=files) + @app.route('/health', methods=['GET']) def health_check(): """ -- cgit v1.2.3