From 0a9c7cf407e3077c0a6d27af320c53b2636e9440 Mon Sep 17 00:00:00 2001 From: Tdxdxoz Date: Wed, 30 Dec 2020 12:48:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=AF=BE=E7=A8=8B=E6=8C=89=E9=A6=96?= =?UTF-8?q?=E5=AD=97=E6=AF=8D=E5=88=86=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 17 +++++++++++++++++ requirements.txt | 1 + templates/list.html | 5 ++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index 2a8de04..2a11f50 100644 --- a/app.py +++ b/app.py @@ -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() diff --git a/requirements.txt b/requirements.txt index e01d448..5ebeeb4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,4 @@ Flask_Limiter==1.3.1 Flask_SQLAlchemy==2.4.4 ipfshttpclient==0.7.0a1 scp==0.13.3 +pypinyin==0.40.0 diff --git a/templates/list.html b/templates/list.html index b35e444..be9211d 100644 --- a/templates/list.html +++ b/templates/list.html @@ -356,12 +356,15 @@
- {% for c, count in all_courses %} + {% for k, courses in all_courses_abc.items() %} +
{{k}}
+ {% for c, count in courses %} {{c}} ({{count}}) {% endfor %} + {% endfor %}