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 *.db
instance/* instance/*
static/* static/*
tmpupload/*

2
app.py
View File

@ -10,6 +10,8 @@ def create_app():
APP = Flask(__name__) APP = Flask(__name__)
APP.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///schedule.db" APP.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///schedule.db"
APP.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False APP.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
APP.config["MAX_CONTENT_LENGTH"] = 16 * 1000
APP.config["UPLOAD_FOLDER"] = "tmpupload"
db.init_app(APP) db.init_app(APP)
migrate.init_app(APP, db, render_as_batch=True) migrate.init_app(APP, db, render_as_batch=True)

View File

@ -1,6 +1,8 @@
import os
from datetime import datetime from datetime import datetime
from zoneinfo import ZoneInfo from zoneinfo import ZoneInfo
import markdown
from app import db from app import db
from models.postmodel import Post from models.postmodel import Post
from sqlalchemy.exc import (DatabaseError, DataError, IntegrityError, from sqlalchemy.exc import (DatabaseError, DataError, IntegrityError,
@ -8,24 +10,36 @@ from sqlalchemy.exc import (DatabaseError, DataError, IntegrityError,
def schedule_post(request): def schedule_post(request):
if request.form["text"]: print("Posted file: {}".format(request.files["file"]))
return _schedule_text(request) print(request.headers)
if request.form["file"]: if "file" in request.files:
print("file found")
return _schedule_file(request) return _schedule_file(request)
if request.form["text"]:
print("text found")
return _schedule_text(request)
return "no correct header found" return "no correct header found"
def _schedule_file(request): def _schedule_file(request):
print(request.form["file"]) file = request.files["file"]
return "not yet implemented" 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): def _schedule_text(request):
print(request.form["text"]) 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: try:
text = request.form["text"]
content = f"<p>{text}</p>"
zoneinfo = ZoneInfo("Europe/Berlin") zoneinfo = ZoneInfo("Europe/Berlin")
post = Post( post = Post(
content=content, content=content,
@ -35,7 +49,11 @@ def _schedule_text(request):
db.session.add(post) db.session.add(post)
db.session.commit() db.session.commit()
except DatabaseError: except (
IntegrityError,
InvalidRequestError,
DataError,
InterfaceError,
DatabaseError,
):
db.session.rollback() db.session.rollback()
return "post scheduled"