ability to upload text files

This commit is contained in:
crunk 2023-11-04 17:34:22 +01:00
parent ccd584198f
commit a8462bc720
3 changed files with 31 additions and 10 deletions

1
.gitignore vendored
View File

@ -11,3 +11,4 @@ test/*
*.db
instance/*
static/*
tmpupload/*

2
app.py
View File

@ -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)

View File

@ -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):
if request.form["text"]:
return _schedule_text(request)
if request.form["file"]:
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)
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"<p>{text}</p>"
_save_to_database(content)
return "text post scheduled"
def _save_to_database(content):
try:
text = request.form["text"]
content = f"<p>{text}</p>"
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"