From c6b895e8eb5ce1a1b9eec389594a0567983ef53a Mon Sep 17 00:00:00 2001
From: stellafull
Date: Fri, 11 Jun 2021 08:56:21 +0800
Subject: [PATCH 1/5] Fix the problem when user click Familiar or Unfamiliar
button will refresh page
---
Readme.md | 5 ++
app/main.py | 141 ++++++++++++++++++++++++++++++++--------------------
2 files changed, 93 insertions(+), 53 deletions(-)
create mode 100644 Readme.md
diff --git a/Readme.md b/Readme.md
new file mode 100644
index 0000000..596df6f
--- /dev/null
+++ b/Readme.md
@@ -0,0 +1,5 @@
+Click the Familiar or Unfamiliar button (current word frequency>1), the current word position is displayed at the top of the page;
+
+Click the Familiar or Unfamiliar button (current word frequency is 1), and the page will be displayed as the top of the entire page.
+
+Demo video link: https://b23.tv/QuB77m
\ No newline at end of file
diff --git a/app/main.py b/app/main.py
index 1356f12..c862b83 100644
--- a/app/main.py
+++ b/app/main.py
@@ -20,22 +20,26 @@ app = Flask(__name__)
app.secret_key = 'lunch.time!'
path_prefix = '/var/www/wordfreq/wordfreq/'
-path_prefix = './' # comment this line in deployment
+path_prefix = './' # comment this line in deployment
+
def get_random_image(path):
img_path = random.choice(glob.glob(os.path.join(path, '*.jpg')))
return img_path[img_path.rfind('/static'):]
+
def get_random_ads():
ads = random.choice(['个性化分析精准提升', '你的专有单词本', '智能捕捉阅读弱点,针对性提高你的阅读水平'])
return ads + '。 试试吧!'
+
def load_freq_history(path):
d = {}
if os.path.exists(path):
d = pickle_idea.load_record(path)
return d
+
def verify_user(username, password):
rq = RecordQuery(path_prefix + 'static/wordfreqapp.db')
rq.instructions("SELECT * FROM user WHERE name='%s' AND password='%s'" % (username, password))
@@ -43,6 +47,7 @@ def verify_user(username, password):
result = rq.get_results()
return result != []
+
def add_user(username, password):
start_date = datetime.now().strftime('%Y%m%d')
expiry_date = '20211230'
@@ -50,13 +55,14 @@ def add_user(username, password):
rq.instructions("INSERT INTO user Values ('%s', '%s', '%s', '%s')" % (username, password, start_date, expiry_date))
rq.do()
-
+
def check_username_availability(username):
rq = RecordQuery(path_prefix + 'static/wordfreqapp.db')
rq.instructions("SELECT * FROM user WHERE name='%s'" % (username))
rq.do()
result = rq.get_results()
- return result == []
+ return result == []
+
def get_expiry_date(username):
rq = RecordQuery(path_prefix + 'static/wordfreqapp.db')
@@ -64,26 +70,24 @@ def get_expiry_date(username):
rq.do()
result = rq.get_results()
if len(result) > 0:
- return result[0]['expiry_date']
+ return result[0]['expiry_date']
else:
return '20191024'
-
def within_range(x, y, r):
- return x > y and abs(x - y) <= r
+ return x > y and abs(x - y) <= r
def get_today_article(user_word_list, articleID):
-
rq = RecordQuery(path_prefix + 'static/wordfreqapp.db')
- if articleID == None:
+ if articleID == None:
rq.instructions("SELECT * FROM article")
else:
rq.instructions('SELECT * FROM article WHERE article_id=%d' % (articleID))
rq.do()
result = rq.get_results()
-
+
# Choose article according to reader's level
d1 = load_freq_history(path_prefix + 'static/frequency/frequency.p')
d2 = load_freq_history(path_prefix + 'static/words_and_tests.p')
@@ -91,24 +95,26 @@ def get_today_article(user_word_list, articleID):
d = {}
d_user = load_freq_history(user_word_list)
- user_level = user_difficulty_level(d_user, d3) # more consideration as user's behaviour is dynamic. Time factor should be considered.
- random.shuffle(result) # shuffle list
+ user_level = user_difficulty_level(d_user,
+ d3) # more consideration as user's behaviour is dynamic. Time factor should be considered.
+ random.shuffle(result) # shuffle list
d = random.choice(result)
text_level = text_difficulty_level(d['text'], d3)
if articleID == None:
for reading in result:
text_level = text_difficulty_level(reading['text'], d3)
- #print('TEXT_LEVEL %4.2f' % (text_level))
+ # print('TEXT_LEVEL %4.2f' % (text_level))
if within_range(text_level, user_level, 0.5):
d = reading
break
-
- s = 'According to your word list, your level is %4.2f and we have chosen an article with a difficulty level of %4.2f for you.
' % (user_level, text_level)
+
+ s = 'According to your word list, your level is %4.2f and we have chosen an article with a difficulty level of %4.2f for you.
' % (
+ user_level, text_level)
s += '%s
' % (d['date'])
s += '%s
' % (d['text'])
s += '%s
' % (d['source'])
s += '%s
' % (get_question_part(d['question']))
- s = s.replace('\n', '
')
+ s = s.replace('\n', '
')
s += '%s' % (get_answer_part(d['question']))
session['articleID'] = d['article_id']
return s
@@ -122,7 +128,7 @@ def appears_in_test(word, d):
def get_time():
- return datetime.now().strftime('%Y%m%d%H%M') # upper to minutes
+ return datetime.now().strftime('%Y%m%d%H%M') # upper to minutes
def get_question_part(s):
@@ -171,7 +177,6 @@ def get_answer_part(s):
return html_code
-
@app.route("//reset", methods=['GET', 'POST'])
def user_reset(username):
if request.method == 'GET':
@@ -196,7 +201,6 @@ def mark_word():
return 'Under construction'
-
@app.route("/", methods=['GET', 'POST'])
def mainpage():
if request.method == 'POST': # when we submit a form
@@ -206,18 +210,19 @@ def mainpage():
page = '\n'
- # save history
+ # save history
d = load_freq_history(path_prefix + 'static/frequency/frequency.p')
lst_history = pickle_idea.dict2lst(d)
d = pickle_idea.merge_frequency(lst, lst_history)
pickle_idea.save_frequency_to_pickle(d, path_prefix + 'static/frequency/frequency.p')
-
+
return page
- elif request.method == 'GET': # when we load a html page
+ elif request.method == 'GET': # when we load a html page
page = '''
@@ -233,7 +238,7 @@ def mainpage():
page += ' %s
\n' % (session['username'], session['username'])
else:
page += '登录 成为会员 使用说明
\n'
- #page += '' % (get_random_image(path_prefix + 'static/img/'))
+ # page += '' % (get_random_image(path_prefix + 'static/img/'))
page += '%s
' % (get_random_ads())
page += '粘帖1篇文章 (English only)
'
page += '