From a8462bc7202330231e10ad66c9459c757f827c67 Mon Sep 17 00:00:00 2001 From: crunk Date: Sat, 4 Nov 2023 17:34:22 +0100 Subject: [PATCH] ability to upload text files --- .gitignore | 1 + app.py | 2 ++ scheduler/schedule_text.py | 36 +++++++++++++++++++++++++++--------- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 74053dc..49339a6 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ test/* *.db instance/* static/* +tmpupload/* diff --git a/app.py b/app.py index fd27448..6dbbe16 100644 --- a/app.py +++ b/app.py @@ -10,6 +10,8 @@ def create_app(): APP = Flask(__name__) APP.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///schedule.db" APP.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False + APP.config["MAX_CONTENT_LENGTH"] = 16 * 1000 + APP.config["UPLOAD_FOLDER"] = "tmpupload" db.init_app(APP) migrate.init_app(APP, db, render_as_batch=True) diff --git a/scheduler/schedule_text.py b/scheduler/schedule_text.py index adbd9f6..90478ef 100644 --- a/scheduler/schedule_text.py +++ b/scheduler/schedule_text.py @@ -1,6 +1,8 @@ +import os from datetime import datetime from zoneinfo import ZoneInfo +import markdown from app import db from models.postmodel import Post from sqlalchemy.exc import (DatabaseError, DataError, IntegrityError, @@ -8,24 +10,36 @@ from sqlalchemy.exc import (DatabaseError, DataError, IntegrityError, def schedule_post(request): + print("Posted file: {}".format(request.files["file"])) + print(request.headers) + if "file" in request.files: + print("file found") + return _schedule_file(request) if request.form["text"]: + print("text found") return _schedule_text(request) - if request.form["file"]: - return _schedule_file(request) return "no correct header found" def _schedule_file(request): - print(request.form["file"]) - return "not yet implemented" + file = request.files["file"] + file_str_contents = file.read().decode("utf-8") + html = markdown.markdown(file_str_contents) + _save_to_database(html) + return "file post scheduled" def _schedule_text(request): print(request.form["text"]) + text = request.form["text"] + content = f"

{text}

" + _save_to_database(content) + return "text post scheduled" + + +def _save_to_database(content): try: - text = request.form["text"] - content = f"

{text}

" zoneinfo = ZoneInfo("Europe/Berlin") post = Post( content=content, @@ -35,7 +49,11 @@ def _schedule_text(request): db.session.add(post) db.session.commit() - except DatabaseError: + except ( + IntegrityError, + InvalidRequestError, + DataError, + InterfaceError, + DatabaseError, + ): db.session.rollback() - - return "post scheduled"