From c6999ac2bca6e0cea712aef8ec2798b5c7c14d95 Mon Sep 17 00:00:00 2001
From: Hui Lan
Date: Tue, 13 Jul 2021 11:33:52 +0800
Subject: Incorporate changes made by students in the semester of Spring 2021.
---
app/UseSqlite.py | 14 ++++++++++++++
app/main.py | 31 +++++++++++++++++++++++--------
app/pickle_idea.py | 18 +++++++++++++++++-
app/pickle_idea2.py | 9 +++++++++
4 files changed, 63 insertions(+), 9 deletions(-)
(limited to 'app')
diff --git a/app/UseSqlite.py b/app/UseSqlite.py
index d9b3f22..67133ce 100644
--- a/app/UseSqlite.py
+++ b/app/UseSqlite.py
@@ -31,6 +31,20 @@ class Sqlite3Template:
self.connect(self.db_fname)
self.instructions(self.query)
self.operate()
+
+ def instructions_with_parameters(self, query_statement, parameters):
+ self.query = query_statement
+ self.parameters = parameters
+
+ def do_with_parameters(self):
+ self.connect(self.db_fname)
+ self.instructions_with_parameters(self.query, self.parameters)
+ self.operate_with_parameters()
+
+ def operate_with_parameters(self):
+ self.conn.row_factory = sqlite3.Row
+ self.results = self.conn.execute(self.query, self.parameters) # self.query is to be given in the child classes
+ self.conn.commit()
class InsertQuery(Sqlite3Template):
diff --git a/app/main.py b/app/main.py
index 1356f12..f35b65c 100644
--- a/app/main.py
+++ b/app/main.py
@@ -38,8 +38,8 @@ def load_freq_history(path):
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))
- rq.do()
+ rq.instructions_with_parameters("SELECT * FROM user WHERE name=? AND password=?", (username, password))
+ rq.do_with_parameters()
result = rq.get_results()
return result != []
@@ -228,7 +228,7 @@ def mainpage():
'''
- page += 'English Pal - Learn English in a smart way!
'
+ page += 'English Pal -(SPM-Spring2021-2599-张小飞201831990641) Learn English in a smart way!
'
if session.get('logged_in'):
page += ' %s
\n' % (session['username'], session['username'])
else:
@@ -270,6 +270,23 @@ def user_mark_word(username):
return 'Under construction'
+@app.route("///unfamiliar", methods=['GET', 'POST'])
+def unfamiliar(username,word):
+ user_freq_record = path_prefix + 'static/frequency/' + 'frequency_%s.pickle' % (username)
+ pickle_idea.unfamiliar(user_freq_record,word)
+ return redirect(url_for('userpage', username=username))
+
+@app.route("///familiar", methods=['GET', 'POST'])
+def familiar(username,word):
+ user_freq_record = path_prefix + 'static/frequency/' + 'frequency_%s.pickle' % (username)
+ pickle_idea.familiar(user_freq_record,word)
+ return redirect(url_for('userpage', username=username))
+
+@app.route("///del", methods=['GET', 'POST'])
+def deleteword(username,word):
+ user_freq_record = path_prefix + 'static/frequency/' + 'frequency_%s.pickle' % (username)
+ pickle_idea2.deleteRecord(user_freq_record,word)
+ return redirect(url_for('userpage', username=username))
@app.route("/", methods=['GET', 'POST'])
def userpage(username):
@@ -345,13 +362,11 @@ def userpage(username):
freq = x[1]
if isinstance(d[word], list): # d[word] is a list of dates
if freq > 1:
- page += ' %s (%d)
\n' % (youdao_link(word), word, '; '.join(d[word]), freq)
+ page += ' %s(%d) 熟悉 不熟悉 删除
\n' % (youdao_link(word), word, '; '.join(d[word]), freq,username, word,username,word, username,word)
else:
- page += ' %s (%d)
\n' % (youdao_link(word), word, '; '.join(d[word]), freq)
+ page += ' %s(%d) 熟悉 不熟悉 删除
\n' % (youdao_link(word), word, '; '.join(d[word]), freq,username, word,username,word, username,word)
elif isinstance(d[word], int): # d[word] is a frequency. to migrate from old format.
- page += '%s%d\n' % (youdao_link(word), word, freq)
-
-
+ page += '%s%d\n' % (youdao_link(word), word, freq)
return page
### Sign-up, login, logout ###
diff --git a/app/pickle_idea.py b/app/pickle_idea.py
index 2061d7c..45bd19a 100644
--- a/app/pickle_idea.py
+++ b/app/pickle_idea.py
@@ -7,6 +7,7 @@
# Task: incorporate the functions into wordfreqCMD.py such that it will also show cumulative frequency.
import pickle
+from datetime import datetime
def lst2dict(lst, d):
@@ -53,7 +54,22 @@ def save_frequency_to_pickle(d, pickle_fname):
pickle.dump(d2, f)
f.close()
-
+def unfamiliar(path,word):
+ f = open(path,"rb")
+ dic = pickle.load(f)
+ dic[word] += [datetime.now().strftime('%Y%m%d%H%M')]
+ fp = open(path,"wb")
+ pickle.dump(dic,fp)
+
+def familiar(path,word):
+ f = open(path,"rb")
+ dic = pickle.load(f)
+ if len(dic[word])>1:
+ del dic[word][0]
+ else:
+ dic.pop(word)
+ fp = open(path,"wb")
+ pickle.dump(dic,fp)
if __name__ == '__main__':
diff --git a/app/pickle_idea2.py b/app/pickle_idea2.py
index 91a5b11..4055fc4 100644
--- a/app/pickle_idea2.py
+++ b/app/pickle_idea2.py
@@ -25,6 +25,15 @@ def lst2dict(lst, d):
else:
d[word] += dates
+def deleteRecord(path,word):
+ with open(path, 'rb') as f:
+ db = pickle.load(f)
+ try:
+ db.pop(word)
+ except KeyError:
+ print("sorry")
+ with open(path, 'wb') as ff:
+ pickle.dump(db, ff)
def dict2lst(d):
if len(d) > 0:
--
cgit v1.2.1