summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/UseSqlite.py14
-rw-r--r--app/main.py31
-rw-r--r--app/pickle_idea.py18
-rw-r--r--app/pickle_idea2.py9
4 files changed, 63 insertions, 9 deletions
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():
</head>
<body>
'''
- page += '<p><b><font size="+3" color="red">English Pal - Learn English in a smart way!</font></b></p>'
+ page += '<p><b><font size="+3" color="red">English Pal -(SPM-Spring2021-2599-张小飞201831990641) Learn English in a smart way!</font></b></p>'
if session.get('logged_in'):
page += ' <a href="%s">%s</a></p>\n' % (session['username'], session['username'])
else:
@@ -270,6 +270,23 @@ def user_mark_word(username):
return 'Under construction'
+@app.route("/<username>/<word>/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("/<username>/<word>/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("/<username>/<word>/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("/<username>", 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 += '<p class="new-word"> <a href="%s">%s</a> (<a title="%s">%d</a>) </p>\n' % (youdao_link(word), word, '; '.join(d[word]), freq)
+ page += '<p class="new-word"> <a href="%s">%s</a>(<a title="%s">%d</a>) <a href="%s/%s/familiar">熟悉</a> <a href="%s/%s/unfamiliar">不熟悉</a> <a href="%s/%s/del">删除</a> </p>\n' % (youdao_link(word), word, '; '.join(d[word]), freq,username, word,username,word, username,word)
else:
- page += '<p class="new-word"> <a href="%s">%s</a> <font color="white">(<a title="%s">%d</a>)</font> </p>\n' % (youdao_link(word), word, '; '.join(d[word]), freq)
+ page += '<p class="new-word"> <a href="%s">%s</a>(<a title="%s">%d</a>) <a href="%s/%s/familiar">熟悉</a> <a href="%s/%s/unfamiliar">不熟悉</a> <a href="%s/%s/del" >删除</a> </p>\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 += '<a href="%s">%s</a>%d\n' % (youdao_link(word), word, freq)
-
-
+ page += '<a href="%s">%s</a>%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: