2
0
Эх сурвалжийг харах

관심 문서 기능 추가를 위한 user_set 테이블로 통합 및 문서에서 관심 문서 추가 기능

https://github.com/openNAMU/openNAMU/issues/2091
잉여개발기 2 жил өмнө
parent
commit
46ae8c01c2

+ 2 - 0
app.py

@@ -607,9 +607,11 @@ app.route('/alarm/delete/<int:id>')(user_alarm_delete)
 
 app.route('/watch_list', defaults = { 'tool' : 'watch_list' })(user_watch_list)
 app.route('/watch_list/<everything:name>', defaults = { 'tool' : 'watch_list' })(user_watch_list_name)
+app.route('/watch_list_from/<everything:name>', defaults = { 'tool' : 'watch_list_from' })(user_watch_list_name)
 
 app.route('/star_doc', defaults = { 'tool' : 'star_doc' })(user_watch_list)
 app.route('/star_doc/<everything:name>', defaults = { 'tool' : 'star_doc' })(user_watch_list_name)
+app.route('/star_doc_from/<everything:name>', defaults = { 'tool' : 'star_doc_from' })(user_watch_list_name)
 
 # 개편 보류중 S
 app.route('/change/email', methods = ['POST', 'GET'])(user_setting_email_2)

+ 2 - 2
route/edit.py

@@ -199,7 +199,7 @@ def edit(name = 'Test', section = 0, do_type = ''):
                 curs.execute(db_change("delete from data where title = ?"), [name])
                 curs.execute(db_change("insert into data (title, data) values (?, ?)"), [name, content])
         
-                curs.execute(db_change("select user from scan where title = ? and type = ''"), [name])
+                curs.execute(db_change("select id from user_set where name = 'watchlist' and data = ?"), [name])
                 for scan_user in curs.fetchall():
                     add_alarm(scan_user[0], ip, '<a href="/w/' + url_pas(name) + '">' + html.escape(name) + '</a>')
                         
@@ -224,7 +224,7 @@ def edit(name = 'Test', section = 0, do_type = ''):
                 curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, ?, 'edit_request_send', ?)"), [name, doc_ver, send])
                 curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, ?, 'edit_request_leng', ?)"), [name, doc_ver, leng])
 
-                curs.execute(db_change("select user from scan where title = ? and type = ''"), [name])
+                curs.execute(db_change("select id from user_set where name = 'watchlist' and data = ?"), [name])
                 for scan_user in curs.fetchall():
                     add_alarm(scan_user[0], ip, '<a href="/edit_request/' + url_pas(name) + '">' + html.escape(name) + '</a> edit_request')
             

+ 1 - 1
route/edit_request.py

@@ -45,7 +45,7 @@ def edit_request(name = 'Test', do_type = ''):
             db_data = curs.fetchall()
             o_data = db_data[0][0] if db_data else ''
             
-            curs.execute(db_change("select user from scan where title = ? and type = ''"), [name])
+            curs.execute(db_change("select id from user_set where name = 'watchlist' and data = ?"), [name])
             for scan_user in curs.fetchall():
                 add_alarm(scan_user[0], edit_request_user, '<a href="/w/' + url_pas(name) + '">' + html.escape(name) + '</a>')
 

+ 6 - 1
route/tool/func.py

@@ -328,7 +328,6 @@ def get_db_table_list():
 
     # 폐지 예정 (user_set으로 통합)
     create_data['rb'] = ['block', 'end', 'today', 'blocker', 'why', 'band', 'login', 'ongoing']
-    create_data['scan'] = ['user', 'title', 'type']
 
     # 개편 예정 (wiki_set과 wiki_filter과 wiki_vote으로 변경)
     create_data['other'] = ['name', 'data', 'coverage']
@@ -595,6 +594,12 @@ def update(ver_num, set_data):
             curs.execute(db_change("update rb set ongoing = '' where ongoing is null"))
             curs.execute(db_change("update rb set login = '' where login is null"))
 
+        if ver_num < 3500375:
+            curs.execute(db_change("select title, type, user from scan"))
+            for for_a in curs.fetchall():
+                type_data = 'watchlist' if for_a[1] == '' else 'star_doc'
+                curs.execute(db_change("insert into user_set (id, name, data) values (?, ?, ?)"), [for_a[2], type_data, for_a[0]])
+
         conn.commit()
 
         print('Update completed')

+ 6 - 14
route/user_watch_list.py

@@ -15,26 +15,18 @@ def user_watch_list(tool):
             return redirect('/login')
 
         if tool == 'watch_list':
-            curs.execute(db_change("select title from scan where type = '' and user = ?"), [ip])
-
+            curs.execute(db_change("select data from user_set where name = 'watchlist' and id = ?"), [ip])
             title_name = load_lang('watchlist')
         else:
-            curs.execute(db_change("select title from scan where type = 'star' and user = ?"), [ip])
-
+            curs.execute(db_change("select data from user_set where name = 'star_doc' and id = ?"), [ip])
             title_name = load_lang('star_doc')
 
         data = curs.fetchall()
         for data_list in data:
-            if tool == 'star_doc':
-                curs.execute(db_change("select date from history where title = ? order by id + 0 desc limit 1"), [data_list[0]])
-                get_data = curs.fetchall()
-                if get_data:
-                    plus = '(' + get_data[0][0] + ') '
-                else:
-                    plus = ''
-            else:
-                plus = ''
-
+            curs.execute(db_change("select date from history where title = ? order by id + 0 desc limit 1"), [data_list[0]])
+            get_data = curs.fetchall()
+            plus = '(' + get_data[0][0] + ') ' if get_data else ''
+            
             div += '' + \
                 '<li>' + \
                     '<a href="/w/' + url_pas(data_list[0]) + '">' + html.escape(data_list[0]) + '</a> ' + \

+ 20 - 9
route/user_watch_list_name.py

@@ -7,27 +7,38 @@ def user_watch_list_name(tool, name = 'Test'):
         ip = ip_check()
         if ip_or_user(ip) != 0:
             return redirect('/login')
+        
+        name_from = 0
+        if tool == 'watch_list_from':
+            name_from = 1
+            tool = 'watch_list'
+        elif tool == 'star_doc_from':
+            name_from = 1
+            tool = 'star_doc'
 
         if tool == 'watch_list':
-            type_data = ''
+            type_data = 'watchlist'
         else:
-            type_data = 'star'
+            type_data = 'star_doc'
 
-        curs.execute(db_change("select title from scan where user = ? and title = ? and type = ?"), [ip, name, type_data])
+        curs.execute(db_change("select data from user_set where name = ? and id = ? and data = ?"), [type_data, ip, name])
         if curs.fetchall():
-            curs.execute(db_change("delete from scan where user = ? and title = ? and type = ?"), [ip, name, type_data])
+            curs.execute(db_change("delete from user_set where name = ? and id = ? and data = ?"), [type_data, ip, name])
         else:
             if tool == 'watch_list':
-                curs.execute(db_change("select count(*) from scan where user = ?"), [ip])
+                curs.execute(db_change("select count(*) from user_set where id = ? and name = ?"), [ip, type_data])
                 count = curs.fetchall()
                 if count and count[0][0] > 10:
                     return re_error('/error/28')
 
-            curs.execute(db_change("insert into scan (user, title, type) values (?, ?, ?)"), [ip, name, type_data])
+            curs.execute(db_change("insert into user_set (id, name, data) values (?, ?, ?)"), [ip, type_data, name])
 
         conn.commit()
 
-        if tool == 'watch_list':
-            return redirect('/watch_list')
+        if name_from == 1:
+            return redirect('/w/' + url_pas(name))
         else:
-            return redirect('/star_doc')
+            if tool == 'watch_list':
+                return redirect('/watch_list')
+            else:
+                return redirect('/star_doc')

+ 2 - 1
route/view_w.py

@@ -317,8 +317,9 @@ def view_w(name = 'Test', do_type = ''):
         div += body[0][0] if body else ''
 
         if ip_or_user(ip) == 0:
-            curs.execute(db_change("select title from scan where user = ? and title = ?"), [ip, name])
+            curs.execute(db_change("select data from user_set where id = ? and data = ?"), [ip, name])
             watch_list = 2 if curs.fetchall() else 1
+            menu += [['star_doc_from/' + url_pas(name), ('☆' if watch_list == 1 else '★'), watch_list - 1]]
         else:
             watch_list = 0
 

+ 2 - 2
version.json

@@ -1,7 +1,7 @@
 {
     "beta" : {
-        "r_ver" : "v3.5.0-dev28",
-        "c_ver" : "3500374",
+        "r_ver" : "v3.5.0-dev29",
+        "c_ver" : "3500375",
         "s_ver" : "3500113"
     }
 }