Files
myriad/myriad/blog.py
2026-03-30 22:20:16 +01:00

100 lines
3.3 KiB
Python

from flask import (
Blueprint, flash, g, redirect, render_template, request, session, url_for, current_app
)
from werkzeug.utils import secure_filename
import os, uuid
from myriad.utilities import server_time, get_datetime_obj, get_datetime_str
from myriad.auth import login_required
from myriad.db import get_db
bp = Blueprint('blog', __name__, url_prefix='/blog')
@bp.route('/')
def blog():
db = get_db()
posts = db.execute("SELECT * FROM blog ORDER BY created DESC").fetchall()
members = db.execute("SELECT * FROM member").fetchall()
member_ids={}
member_icons={}
for member in members:
mid = member[0]
iconid = member[6]
member_ids[mid] = member
icon = db.execute("SELECT icon_location FROM icons WHERE id=(?)",(iconid,)).fetchone()
member_icons[mid] = icon
return render_template('blog/blog.html', blog=posts, member_ids=member_ids, member_icons=member_icons)
@bp.route('/new', methods=('GET', 'POST'))
@login_required
def new():
db = get_db()
members = db.execute("SELECT id,member_name FROM member").fetchall()
if request.method == 'POST':
title = request.form['title']
content = request.form['content']
mid = request.form["mid"]
privacy = request.form["privacy"]
created = get_datetime_obj(server_time())
db.execute("INSERT INTO blog (member_id, title, content, public, created) VALUES (?, ?, ?, ?, ?)",(mid, title, content, privacy, created))
db.commit()
return redirect(url_for('blog.blog'))
return render_template('blog/new.html', members=members)
@bp.route("/delete/<pid>/<location>")
@login_required
def delete(pid, location):
db = get_db()
db.execute("DELETE FROM blog WHERE id=(?)",(pid,))
db.commit()
if location == "blog":
return redirect(url_for("blog.blog"))
else:
return redirect(url_for("home.page", mid=location))
@bp.route("/toggle/<pid>/<location>")
@login_required
def toggle(pid, location):
db = get_db()
post = db.execute("SELECT * FROM blog WHERE id=(?)",(pid,)).fetchone()
if post[5] == 0:
db.execute("UPDATE blog SET public=(?) WHERE id=(?)",(1, pid))
db.commit()
else:
db.execute("UPDATE blog SET public=(?) WHERE id=(?)",(0, pid))
db.commit()
if location == "blog":
return redirect(url_for("blog.blog"))
else:
return redirect(url_for("home.page", mid=location))
@bp.route("/edit/<pid>/<location>", methods=('GET', 'POST'))
@login_required
def edit(pid,location):
db = get_db()
post = db.execute("SELECT * FROM blog WHERE id=(?)",(pid,)).fetchone()
members = db.execute("SELECT id,member_name FROM member").fetchall()
if request.method == 'POST':
title = request.form['title']
content = request.form['content']
mid = request.form["mid"]
privacy = request.form["privacy"]
db.execute("UPDATE blog SET title=(?), content=(?), member_id=(?), public=(?) WHERE id=(?)",(title, content, mid, privacy, pid))
db.commit()
if location == "blog":
return redirect(url_for("blog.blog"))
else:
return redirect(url_for("home.page", mid=location))
return render_template('blog/edit.html', post=post, members=members)