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