diff --git a/app/Article.py b/app/Article.py
index 04a32ea..707ad91 100644
--- a/app/Article.py
+++ b/app/Article.py
@@ -32,12 +32,14 @@ def get_article_body(s):
return '\n'.join(lst)
-def get_today_article(user_word_list, articleID):
+def get_today_article(user_word_list, existing_articles):
rq = RecordQuery(path_prefix + 'static/wordfreqapp.db')
- if articleID == None:
+ if existing_articles is None:
+ existing_articles = [0, []] # existing_articles[0]:为existing_articles[1]的索引;existing_articles[1]:之前显示文章的id列表,越后越新
+ if existing_articles[0] > len(existing_articles[1])-1:
rq.instructions("SELECT * FROM article")
else:
- rq.instructions('SELECT * FROM article WHERE article_id=%d' % (articleID))
+ rq.instructions('SELECT * FROM article WHERE article_id=%d' % (existing_articles[1][existing_articles[0]]))
rq.do()
result = rq.get_results()
random.shuffle(result)
@@ -50,33 +52,39 @@ 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
- d = random.choice(result)
- text_level = text_difficulty_level(d['text'], d3)
- if articleID == None:
+ text_level = 0
+ flag = False
+ if existing_articles[0] > len(existing_articles[1])-1: # 下一篇
for reading in result:
text_level = text_difficulty_level(reading['text'], d3)
factor = random.gauss(0.8,
0.1) # a number drawn from Gaussian distribution with a mean of 0.8 and a stand deviation of 1
- if within_range(text_level, user_level, (8.0 - user_level) * factor):
+ if within_range(reading['article_id'] not in existing_articles[1] and text_level, user_level, (8.0 - user_level) * factor): # 新的文章之前没有出现过且符合一定范围的水平
d = reading
+ existing_articles[1].append(d['article_id']) # 列表添加新的文章id;下面进行
+ flag = True
break
+ else: # 上一篇
+ d = random.choice(result)
+ text_level = text_difficulty_level(d['text'], d3)
+ flag = True
- 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 += 'Article added on: %s
' % (d['date'])
- s += ''
- article_title = get_article_title(d['text'])
- article_body = get_article_body(d['text'])
- s += '
%s
' % (article_title)
- s += '
%s
' % (article_body)
- s += '
%s
' % (d['source'])
- s += '
%s
' % (get_question_part(d['question']))
- s = s.replace('\n', '
')
- s += '%s' % (get_answer_part(d['question']))
- s += '
'
- session['articleID'] = d['article_id']
- return s
+ today_article = None
+ if flag:
+ today_article = {
+ "user_level": '%4.2f' % user_level,
+ "text_level": '%4.2f' % text_level,
+ "date": d['date'],
+ "article_title": get_article_title(d['text']),
+ "article_body": get_article_body(d['text']),
+ "source": d["source"],
+ "question": get_question_part(d['question']),
+ "answer": get_answer_part(d['question'])
+ }
+ else:
+ existing_articles[0] -= 1
+
+ return existing_articles, today_article
def load_freq_history(path):
@@ -116,21 +124,4 @@ def get_answer_part(s):
flag = 1
elif flag == 1:
result.append(line)
- # https://css-tricks.com/snippets/javascript/showhide-element/
- js = '''
-
- '''
- html_code = js
- html_code += '\n'
- html_code += 'ANSWER \n'
- html_code += '%s
\n' % ('\n'.join(result))
- return html_code
\ No newline at end of file
+ return '\n'.join(result)
\ No newline at end of file
diff --git a/app/account_service.py b/app/account_service.py
index 9b1c46b..c1bd64c 100644
--- a/app/account_service.py
+++ b/app/account_service.py
@@ -19,21 +19,15 @@ def signup():
# POST方法需判断是否注册成功,再根据结果返回不同的内容
username = escape(request.form['username'])
password = escape(request.form['password'])
- password2 = escape(request.form['password2'])
#! 添加如下代码为了过滤注册时的非法字符
warn = WarningMessage(username)
if str(warn) != 'OK':
- return str(warn)
+ return jsonify({'status': '3', 'warn': str(warn)})
available = check_username_availability(username)
if not available: # 用户名不可用
- flash('用户名 %s 已经被注册。' % (username))
- return render_template('signup.html')
- elif len(password.strip()) < 4: # 密码过短
- return '密码过于简单。'
- elif password != password2:
- return '确认密码与输入密码不一致!'
+ return jsonify({'status': '0'})
else: # 添加账户信息
add_user(username, password)
verified = verify_user(username, password)
@@ -43,11 +37,10 @@ def signup():
session[username] = username
session['username'] = username
session['expiry_date'] = get_expiry_date(username)
- session['articleID'] = None
- return '恭喜,你已成功注册, 你的用户名是 %s 。
\
- 开始使用 返回首页
' % (username, username, username)
+ session['existing_articles'] = None
+ return jsonify({'status': '2'})
else:
- return '用户名密码验证失败。'
+ return jsonify({'status': '1'})
@@ -59,13 +52,7 @@ def login():
'''
if request.method == 'GET':
# GET请求
- if not session.get('logged_in'):
- # 未登录,返回登录页面
- return render_template('login.html')
- else:
- # 已登录,提示信息并显示登出按钮
- return '你已登录 %s 。 登出点击这里 。' % (
- session['username'], session['username'])
+ return render_template('login.html')
elif request.method == 'POST':
# POST方法用于判断登录是否成功
# check database and verify user
@@ -79,10 +66,10 @@ def login():
session['username'] = username
user_expiry_date = get_expiry_date(username)
session['expiry_date'] = user_expiry_date
- session['articleID'] = None
- return redirect(url_for('user_bp.userpage', username=username))
+ session['existing_articles'] = None
+ return jsonify({'status': '1'})
else:
- return '无法通过验证。'
+ return jsonify({'status': '0'})
@accountService.route("/logout", methods=['GET', 'POST'])
@@ -115,31 +102,9 @@ def reset():
# POST请求用于提交修改后信息
old_password = escape(request.form['old-password'])
new_password = escape(request.form['new-password'])
-
- re_new_password = escape(request.form['re-new-password']) # 确认新密码
- if re_new_password != new_password: #验证新密码两次输入是否相同
- return '新密码不匹配,请重新输入'
- if len(new_password) < 4: #验证新密码长度,原则参照注册模块
- return '密码过于简单。(密码长度至少4位)'
-
flag = change_password(username, old_password, new_password) # flag表示是否修改成功
if flag:
session['logged_in'] = False
- return \
-'''
-
-
-'''
-
+ return jsonify({'status':'1'}) # 修改成功
else:
- return \
-'''
-
-
-'''
+ return jsonify({'status':'2'}) # 修改失败
diff --git a/app/main.py b/app/main.py
index e311bb0..59e0b88 100644
--- a/app/main.py
+++ b/app/main.py
@@ -39,8 +39,7 @@ def get_random_ads():
返回随机广告
:return: 一个广告(包含HTML标签)
'''
- ads = random.choice(['个性化分析精准提升', '你的专有单词本', '智能捕捉阅读弱点,针对性提高你的阅读水平'])
- return ads + '。 试试 吧!'
+ return random.choice(['个性化分析精准提升', '你的专有单词本', '智能捕捉阅读弱点,针对性提高你的阅读水平'])
def appears_in_test(word, d):
diff --git a/app/templates/login.html b/app/templates/login.html
index a347e22..ccf6f34 100644
--- a/app/templates/login.html
+++ b/app/templates/login.html
@@ -1,28 +1,47 @@
{% block body %}
{% if session['logged_in'] %}
-You're logged in already!
+你已登录 {{ session['username'] }} 。 登出点击这里 。
{% else %}
-
+
+
-注册
-
{% endif %}
{% endblock %}
diff --git a/app/templates/mainpage_get.html b/app/templates/mainpage_get.html
index cbb51a6..7f02c12 100644
--- a/app/templates/mainpage_get.html
+++ b/app/templates/mainpage_get.html
@@ -26,7 +26,7 @@
{{session['username']}}
{% else %}
登录 注册 使用说明
- {{random_ads|safe}}
+ {{ random_ads }}。 试试 吧!
{% endif %}
共有文章 {{number_of_essays}} 篇
粘贴1篇文章 (English only)
diff --git a/app/templates/reset.html b/app/templates/reset.html
index 902d046..d29855b 100644
--- a/app/templates/reset.html
+++ b/app/templates/reset.html
@@ -2,6 +2,38 @@
+
+
@@ -9,14 +41,11 @@
Reset Password
-
+
+
+
+ 提交
+ 放弃修改
{% endblock %}
\ No newline at end of file
diff --git a/app/templates/signup.html b/app/templates/signup.html
index 1fd05f0..c70e4ba 100644
--- a/app/templates/signup.html
+++ b/app/templates/signup.html
@@ -6,6 +6,47 @@ You're logged in already! Logout .
{% else %}
+
+
{{ get_flashed_messages()[0] | safe }}
@@ -15,12 +56,10 @@ You're logged in already! Logout .
Sign Up
-
+
+
+
+ 注册
diff --git a/app/templates/userpage_get.html b/app/templates/userpage_get.html
index ea91c58..5ef86c7 100644
--- a/app/templates/userpage_get.html
+++ b/app/templates/userpage_get.html
@@ -18,17 +18,6 @@
{% endfor %}
{% endif %}
-{# // add !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #}
-
-{# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #}
EnglishPal Study Room for {{ username }}
-{# original code: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #}
-
+
English Pal for {{ username }}
退出
重设密码
- {{ flashed_messages|safe }}
+ {% for message in messages %}
+
Congratulations! {{ message }}
+ {% endfor %}
下一篇 Next Article
-{# add code !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #}
- {% if session.get('articleID') == session.get('old_articleID') %}
- {% if session.get('old_articleID') != None %}
-
出bug了
- {% endif %}
+ {% if session.get('existing_articles')[0] != None and session.get('existing_articles')[0] !=0 %}
+
上一篇 Previous Article
{% endif %}
- {% if session.get('articleID') != session.get('old_articleID') %}
- {% if session.get('old_articleID') != None %}
-
上一篇 Previous Article
- {% endif %}
- {% endif %}
-{# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #}
阅读文章并回答问题
-
{{ today_article|safe }}
+
+ {% if today_article %}
+
According to your word list, your level is {{ today_article["user_level"] }} and we have chosen an article with a difficulty level of {{ today_article["text_level"] }} for you.
+
Article added on: {{ today_article["date"] }}
+
+
{{ today_article["article_title"] }}
+
{{ today_article["article_body"] }}
+
{{ today_article['source'] }}
+
{{ today_article['question'] }}
+
+
ANSWER
+
{{ today_article['answer'] }}
+
+ {% else %}
+
+
Notes: No article is currently available for you. You can try again a few times or mark new words in the passage to improve your level.
+
+ {% endif %}
+
生词高亮
大声朗读
diff --git a/app/user_service.py b/app/user_service.py
index 2d10404..2c91391 100644
--- a/app/user_service.py
+++ b/app/user_service.py
@@ -29,9 +29,10 @@ def user_reset(username):
:param username: 用户名
:return: 返回页面内容
'''
- session['old_articleID'] = session.get('articleID')
if request.method == 'GET':
- session['articleID'] = None
+ existing_articles = session.get("existing_articles")
+ existing_articles[0] += 1
+ session["existing_articles"] = existing_articles
return redirect(url_for('user_bp.userpage', username=username))
else:
return 'Under construction'
@@ -44,7 +45,9 @@ def user_back(username):
:return: 返回页面内容
'''
if request.method == 'GET':
- session['articleID'] = session.get('old_articleID')
+ existing_articles = session.get("existing_articles")
+ existing_articles[0] -= 1
+ session["existing_articles"] = existing_articles
return redirect(url_for('user_bp.userpage', username=username))
@@ -130,11 +133,14 @@ def userpage(username):
words = ''
for x in lst3:
words += x[0] + ' '
+ existing_articles, today_article = get_today_article(user_freq_record, session.get('existing_articles'))
+ session['existing_articles'] = existing_articles
+ # 通过 today_article,加载前端的显示页面
return render_template('userpage_get.html',
username=username,
session=session,
- flashed_messages=get_flashed_messages_if_any(),
- today_article=get_today_article(user_freq_record, session['articleID']),
+ flashed_messages=get_flashed_messages(),
+ today_article=today_article,
d_len=len(d),
lst3=lst3,
yml=Yaml.yml,
@@ -173,15 +179,3 @@ def get_time():
'''
return datetime.now().strftime('%Y%m%d%H%M') # upper to minutes
-def get_flashed_messages_if_any():
- '''
- 在用户界面显示黄色提示信息
- :return: 包含HTML标签的提示信息
- '''
- messages = get_flashed_messages()
- s = ''
- for message in messages:
- s += '
'
- s += f'Congratulations! {message}'
- s += '
'
- return s