Parcourir la source

리다이렉트 방식 변경

잉여개발기 (SPDV) il y a 2 ans
Parent
commit
aef2ba2f85
3 fichiers modifiés avec 39 ajouts et 25 suppressions
  1. 28 21
      route/tool/func_render_namumark.py
  2. 10 3
      route/view_w.py
  3. 1 1
      version.json

+ 28 - 21
route/tool/func_render_namumark.py

@@ -1,4 +1,5 @@
 from .func_tool import *
+from typing import Any
 
 class class_do_render_namumark:
     def __init__(self, conn, doc_name, doc_data, doc_set, lang_data, do_type = 'exter'):
@@ -35,7 +36,7 @@ class class_do_render_namumark:
         self.data_temp_storage = {}
         self.data_temp_storage_count = 0
 
-        self.data_backlink = {}
+        self.data_backlink : dict[str, Any] = {}
 
         self.data_math_count = 0
         self.data_redirect = 0
@@ -1087,7 +1088,10 @@ class class_do_render_namumark:
                     link_inter_regex = re.compile('^(?:inter|인터):([^:]+):', flags = re.I)
 
                     link_inter_name = re.search(link_inter_regex, link_main)
-                    link_inter_name = link_inter_name.group(1)
+                    if link_inter_name:
+                        link_inter_name = link_inter_name.group(1)
+                    else:
+                        link_inter_name = ''
 
                     link_main = re.sub(link_inter_regex, '', link_main)
                     link_title = link_inter_name + ':' + link_main
@@ -1140,7 +1144,11 @@ class class_do_render_namumark:
 
                         data_name = self.get_tool_data_storage('<a class="opennamu_link_inter" title="' + link_title + '" href="' + link_main + link_data_sharp + '">' + link_sub_storage, '</a>', link_data_full)
                     
-                        self.render_data = re.sub(link_regex, lambda x : ('<' + data_name + '>' + link_sub + '</' + data_name + '>' + link_data[2]), self.render_data, 1)
+                        add_str = ''
+                        if link_data[2]:
+                            add_str = link_data[2]
+
+                        self.render_data = re.sub(link_regex, lambda x : ('<' + data_name + '>' + link_sub + '</' + data_name + '>' + add_str), self.render_data, 1)
                     else:
                         self.render_data = re.sub(link_regex, link_data[2], self.render_data, 1)
                 # out link
@@ -1188,8 +1196,12 @@ class class_do_render_namumark:
                             link_inter_icon = db_data[0][0] + ':'
                             link_class = 'opennamu_link_inter'
 
+                    add_str = ''
+                    if link_data[2]:
+                        add_str = link_data[2]
+
                     data_name = self.get_tool_data_storage('<a class="' + link_class + '" target="_blank" title="' + link_title + '" href="' + link_main + '">' + link_inter_icon + link_sub_storage, '</a>', link_data_full)
-                    self.render_data = re.sub(link_regex, lambda x : ('<' + data_name + '>' + link_sub + '</' + data_name + '>' + link_data[2]), self.render_data, 1)
+                    self.render_data = re.sub(link_regex, lambda x : ('<' + data_name + '>' + link_sub + '</' + data_name + '>' + add_str), self.render_data, 1)
                 # in link
                 else:
                     # under page & fix url
@@ -1253,8 +1265,12 @@ class class_do_render_namumark:
 
                     self.link_count += 1
 
+                    add_str = ''
+                    if link_data[2]:
+                        add_str = link_data[2]
+
                     data_name = self.get_tool_data_storage('<a class="' + link_exist + ' ' + link_same + '" title="' + link_title + '" href="' + link_main + link_data_sharp + '">' + link_sub_storage, '</a>', link_data_full)
-                    self.render_data = re.sub(link_regex, lambda x : ('<' + data_name + '>' + link_sub + '</' + data_name + '>' + link_data[2]), self.render_data, 1)
+                    self.render_data = re.sub(link_regex, lambda x : ('<' + data_name + '>' + link_sub + '</' + data_name + '>' + add_str), self.render_data, 1)
 
             link_count_all -= 1
 
@@ -1532,8 +1548,6 @@ class class_do_render_namumark:
                     link_main = self.get_tool_data_restore(link_main, do_type = 'slash')
                     link_main = html.unescape(link_main)
 
-                    link_exist = 1
-
                     self.curs.execute(db_change("select title from data where title = ?" + self.link_case_insensitive), [link_main])
                     db_data = self.curs.fetchall()
                     if not db_data:
@@ -1541,26 +1555,19 @@ class class_do_render_namumark:
                             self.data_backlink[link_main] = {}
 
                         self.data_backlink[link_main]['no'] = ''
-                        link_exist = 0
                     else:
                         link_main = db_data[0][0]
                         if not link_main in self.data_backlink:
                             self.data_backlink[link_main] = {}
 
-                    self.data_backlink[link_main]['redirect'] = ''
+                    self.data_backlink[link_main]['redirect'] = link_data_sharp
 
                     link_main = url_pas(link_main)
                     if link_main != '':
                         link_main = '/w_from/' + link_main
 
                     self.data_redirect = 1
-                    if link_exist == 1:
-                        if self.doc_set['doc_from'] != '':
-                            data_name = self.get_tool_data_storage('<a href="' + link_main + link_data_sharp + '">(GO)</a>', '', link_data_full)
-                        else:
-                            data_name = self.get_tool_data_storage('<meta http-equiv="refresh" content="0; url=' + link_main + link_data_sharp + '">', '', link_data_full)
-                    else:
-                        data_name = self.get_tool_data_storage('', '', link_data_full)
+                    data_name = self.get_tool_data_storage('<a href="' + link_main + link_data_sharp + '">(GO)</a>', '', link_data_full)
 
                     self.render_data = '<' + data_name + '></' + data_name + '>'
                 else:
@@ -2084,7 +2091,7 @@ class class_do_render_namumark:
                 self.do_inter_render = func
                 self.doc_set = doc_set
 
-            def replace_sub(match):
+            def replace_sub(self, match):
                 data = inter_data[match[1]]
                 data = re.sub(inter_data_regex, self.replace_sub, data)
 
@@ -2266,9 +2273,9 @@ class class_do_render_namumark:
                 list_sub_regex = r'\n( *)(?:(1|a|A|I|i)\.(?:#([0-9]*))?|(\*)) ?([^\n]*)'
 
                 list_class = do_render_list_int_to(list_view_set)
-                list_data = re.sub(list_sub_regex, list_class, list_data)
+                list_data_str = re.sub(list_sub_regex, list_class, list_data)
 
-                self.render_data = re.sub(list_regex, lambda x : ('\n<front_br><ul class="opennamu_ul">' + list_data + '</ul><back_br>\n'), self.render_data, 1)
+                self.render_data = re.sub(list_regex, lambda x : ('\n<front_br><ul class="opennamu_ul">' + list_data_str + '</ul><back_br>\n'), self.render_data, 1)
 
             list_count_max -= 1
 
@@ -2444,14 +2451,14 @@ class class_do_render_namumark:
             self.render_data = self.render_data.replace('\n', '<no_br>')
 
         data_backlink_dict = self.data_backlink
-        self.data_backlink = [[self.doc_name, for_a, for_b, self.data_backlink[for_a][for_b]] for for_a in self.data_backlink for for_b in self.data_backlink[for_a]]
+        data_backlink_list = [[self.doc_name, for_a, for_b, self.data_backlink[for_a][for_b]] for for_a in self.data_backlink for for_b in self.data_backlink[for_a]]
 
         # 여기 수정시 do_inter_render도 수정 필요
         return [
             self.render_data, # html
             self.render_data_js, # js
             {
-                'backlink' : self.data_backlink, # backlink
+                'backlink' : data_backlink_list, # backlink
                 'backlink_dict' : data_backlink_dict,
                 'footnote' : self.data_footnote_all, # footnote
                 'category' : self.data_category_list,

+ 10 - 3
route/view_w.py

@@ -13,8 +13,9 @@ def view_w(name = 'Test', do_type = ''):
         file_data = ''
 
         doc_type = ''
-        now_time = get_time()
+        redirect_to = None
 
+        now_time = get_time()
         ip = ip_check()
             
         uppage = re.sub(r"/([^/]+)$", '', name)
@@ -164,11 +165,17 @@ def view_w(name = 'Test', do_type = ''):
             curs.execute(db_change("select link from back where title = ? and type = 'include' limit 1"), [name])
             doc_type = 'include' if curs.fetchall() else doc_type
 
-            curs.execute(db_change("select link from back where link = ? and type = 'redirect' limit 1"), [name])
-            doc_type = 'redirect' if curs.fetchall() else doc_type
+            curs.execute(db_change("select title, data from back where link = ? and type = 'redirect' limit 1"), [name])
+            db_data = curs.fetchall()
+            if db_data:
+                doc_type = 'redirect'
+                redirect_to = url_pas(db_data[0][0]) + db_data[0][1]
 
             name_view = name
 
+        if redirect_to:
+            return redirect(conn, '/w_from/' + redirect_to)
+
         end_data = '''
             <div id="opennamu_preview_area">
                 <textarea id="opennamu_editor_doc_name" style="display: none;">''' + html.escape(name) + '''</textarea>

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.5.0-dev91",
+        "r_ver" : "v3.5.0-dev93",
         "c_ver" : "3500379",
         "s_ver" : "3500113"
     }