This commit is contained in:
parent
8f0ae0d4f5
commit
c8291f415b
2 changed files with 42 additions and 18 deletions
|
@ -1,8 +1,6 @@
|
|||
from os import path as os_path
|
||||
|
||||
from config import Config
|
||||
from flask import Blueprint, flash, redirect, render_template, request
|
||||
from utils.misc import get_posts, post_filename
|
||||
from utils.misc import create_post, fresh_file_id, get_posts
|
||||
from werkzeug import Response
|
||||
|
||||
name = __name__.split(".")[-1]
|
||||
|
@ -26,23 +24,15 @@ def new_post() -> Response:
|
|||
if Config.is_logged():
|
||||
content = request.form.get("p")
|
||||
if content:
|
||||
# finding all posts
|
||||
paths = get_posts()
|
||||
|
||||
# finding an appropriate filename
|
||||
filename = 0
|
||||
if len(paths) > filename:
|
||||
filename = paths.index(max(iter(paths), key=os_path.getmtime)) + 1
|
||||
filename = fresh_file_id()
|
||||
|
||||
# creating the post
|
||||
with open(
|
||||
post_filename(filename),
|
||||
"w",
|
||||
encoding="utf-8",
|
||||
) as f:
|
||||
f.write(content)
|
||||
# create/update the post
|
||||
update = create_post(filename, content)
|
||||
|
||||
flash(f"<a href='/read/{filename}'>post created</a>.")
|
||||
flash(
|
||||
f"<a href='/read/{filename}'>post {'updated' if update else 'created'}</a>."
|
||||
)
|
||||
else:
|
||||
flash(f"invalid post: {content}")
|
||||
else:
|
||||
|
|
|
@ -5,7 +5,7 @@ from os import remove as os_remove
|
|||
from config import Config
|
||||
|
||||
|
||||
def post_filename(number: int):
|
||||
def post_filename(number: int) -> str:
|
||||
"""get filename of post"""
|
||||
return f"{Config.data_dir}/{number}.txt"
|
||||
|
||||
|
@ -37,3 +37,37 @@ def delete_post(filename: str) -> bool:
|
|||
else:
|
||||
os_remove(filename)
|
||||
return True
|
||||
|
||||
|
||||
def fresh_file_id() -> int:
|
||||
# finding all posts
|
||||
paths = get_posts()
|
||||
|
||||
# use the latest file as the reference and increment the ID
|
||||
filename = 0
|
||||
if len(paths) > filename:
|
||||
chosen = max(iter(paths), key=os_path.getmtime)
|
||||
|
||||
# add 1 to the chosen id
|
||||
filename = int(chosen.split("/")[-1][:-4]) + 1
|
||||
return filename
|
||||
|
||||
|
||||
def exist_post(file_id: int) -> bool:
|
||||
try:
|
||||
open(post_filename(file_id))
|
||||
return True
|
||||
except FileNotFoundError:
|
||||
return False
|
||||
|
||||
|
||||
def create_post(file_id: int, content: str) -> bool:
|
||||
"""create a post"""
|
||||
# check if the file already exists
|
||||
update = exist_post(file_id)
|
||||
|
||||
# write into the file
|
||||
with open(post_filename(file_id), "w", encoding="utf-8") as f:
|
||||
f.write(content)
|
||||
|
||||
return update
|
||||
|
|
Loading…
Reference in a new issue