100 lines
3.3 KiB
Python
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 ORDER BY member_name COLLATE NOCASE").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) |