|
|
@ -16,6 +16,9 @@ from flask_limiter.util import get_remote_address |
|
|
|
import ipfshttpclient |
|
|
|
from mastodon import Mastodon |
|
|
|
|
|
|
|
import pypinyin |
|
|
|
|
|
|
|
from string import ascii_uppercase as AZ |
|
|
|
from datetime import date, datetime |
|
|
|
from functools import wraps |
|
|
|
import hashlib |
|
|
@ -144,6 +147,19 @@ def mast_login_auth(): |
|
|
|
|
|
|
|
return redirect(url_for('list')) |
|
|
|
|
|
|
|
def by_abc(l): |
|
|
|
d = { |
|
|
|
letter: [] for letter in AZ+'/' |
|
|
|
} |
|
|
|
for item in l: |
|
|
|
k = pypinyin.lazy_pinyin(item[0], style=pypinyin.Style.FIRST_LETTER, errors=lambda x:x[0])[0].upper() |
|
|
|
if k not in AZ: |
|
|
|
k = '/' |
|
|
|
d[k].append(item) |
|
|
|
|
|
|
|
return {k: v for k, v in d.items() if v} |
|
|
|
|
|
|
|
|
|
|
|
@app.route('/pastExam/') |
|
|
|
@login_required() |
|
|
|
def list(username): |
|
|
@ -180,6 +196,7 @@ def list(username): |
|
|
|
pagination = ps.paginate(max_per_page=100) |
|
|
|
curr_year = date.today().year |
|
|
|
all_courses = db.session.query(Paper.course, func.count()).group_by(Paper.course).all() |
|
|
|
all_courses_abc = by_abc(all_courses) |
|
|
|
all_teachers = db.session.query(Paper.teacher, func.count()).group_by(Paper.teacher).all() |
|
|
|
all_years = db.session.query(Paper.year, func.count()).group_by(Paper.year).all() |
|
|
|
ipfs_version = hashlib.sha256(C.ipfs_base_url.encode('utf-8')).hexdigest() |
|
|
|