Files
myriad/myriad/home.py
2026-03-31 01:58:59 +01:00

90 lines
3.3 KiB
Python

from flask import (
Blueprint, flash, g, redirect, render_template, request, url_for, current_app
)
from werkzeug.exceptions import abort
from myriad.auth import login_required
from myriad.db import get_db
bp = Blueprint('home', __name__)
@bp.route('/')
def index():
db = get_db()
fronters = db.execute("SELECT * FROM member WHERE front=(?) ORDER BY member_name",(1,)).fetchall()
homepage = db.execute("SELECT * FROM member WHERE homepage=(?) ORDER BY member_name",(1,)).fetchall()
latest_start = db.execute("SELECT start_time FROM front_log ORDER BY start_time DESC").fetchone()
latest_end = db.execute("SELECT end_time FROM front_log ORDER BY end_time DESC").fetchone()
latest = None
if latest_start and latest_end:
start = latest_start[0]
end = latest_end[0]
if end:
if start > end:
latest = start
else:
latest = end
else:
latest = start
elif latest_start and not latest_end:
latest = latest_start[0]
icons={}
for member in homepage:
icon_id = member[6]
if icon_id:
icon = db.execute("SELECT icon_location FROM icons WHERE id=(?)",(icon_id,)).fetchone()
if icon:
icons[member[0]] = icon[0]
else:
icons[member[0]] = None
return render_template('index.html', front_list=fronters, home_pins=homepage, icons=icons, last_updated=latest)
@bp.route('/full')
def full_list():
db = get_db()
members = db.execute('SELECT * FROM member ORDER BY member_name COLLATE NOCASE').fetchall()
icons={}
for member in members:
icon_id = member[6]
if icon_id:
icon = db.execute("SELECT icon_location FROM icons WHERE id=(?)",(icon_id,)).fetchone()
if icon:
icons[member[0]] = icon[0]
else:
icons[member[0]] = None
return render_template('full.html', memberlist=members, icons=icons)
@bp.route('/member/<mid>')
def page(mid):
db = get_db()
member = db.execute("SELECT * FROM member WHERE id=(?)",(mid,)).fetchone()
blog = db.execute("SELECT * FROM blog WHERE member_id=(?) ORDER BY created DESC",(mid,)).fetchall()
icon = db.execute("SELECT icon_location FROM icons WHERE id=(?)",(member[6],)).fetchone()
all_icons = db.execute("SELECT icon_location FROM icons WHERE member_id=(?)",(mid,)).fetchall()
blinkies = db.execute("SELECT blinkie_location FROM blinkies WHERE member_id=(?)",(mid,)).fetchall()
stamps = db.execute("SELECT stamp_location FROM stamps WHERE member_id=(?)",(mid,)).fetchall()
return render_template('page.html', member=member, blog=blog, icon=icon, all_icons=all_icons, blinkies=blinkies, stamps=stamps)
@bp.route("/groups")
def groups():
db = get_db()
groups = db.execute("SELECT * FROM groups").fetchall()
group_members_db = db.execute("SELECT * FROM group_members").fetchall()
group_members = {}
for entry in group_members_db:
gid = entry[1]
mid = entry[2]
member = db.execute("SELECT * FROM member WHERE id=(?)",(mid,)).fetchone()
if gid in group_members:
group_members[gid].append(member)
else:
group_members[gid]=[member]
return render_template("groups.html", groups=groups, group_members=group_members)