]> git.phdru.name Git - phdru.name/cgi-bin/blog-ru/search-tags.git/blobdiff - search-tags.py
Version 0.8: Python 3
[phdru.name/cgi-bin/blog-ru/search-tags.git] / search-tags.py
index fec3705e91fa0a710cd8b687f8e14cf8a5edfd5f..228866b8a8f5fa625dbc6d3bba5523351693a7c2 100755 (executable)
@@ -6,22 +6,24 @@ __author__ = "Oleg Broytman <phd@phdru.name>"
 __copyright__ = "Copyright (C) 2014-2024 PhiloSoft Design"
 __license__ = "GNU GPL"
 
+from html import escape
+from urllib.parse import parse_qs
+import os
 import sys
 
 from lark import ParseError
-import mycgi
 
-from html.response import redirect, response
+from html_output.response import redirect, response
 from parser import parser
 
-form = mycgi.Form()
-if 'q' not in form:
+qs_dict = parse_qs(os.environ['QUERY_STRING'], encoding='koi8-r')
+if 'q' not in qs_dict or len(qs_dict['q']) > 1:
     status = "400 Bad request"
     title = "Error!"
     body = "Required parameter is missing!"
 
 else:
-    q = form['q'].value
+    q = qs_dict['q'][0]
     try:
         tree = parser.parse(q)
     except ParseError:
@@ -32,10 +34,12 @@ else:
         if tree[0] == 'NAME':  # Single tag - just do redirect
             tag = tree[1]
             assert isinstance(tag, str)
-            from tags import tag_exists
-            if tag_exists(tag):
+            from tags import real_tag
+            rtag = real_tag(tag)
+            if rtag:
                 redirect(
-                    "/Russian/blog/tags/%s.html" % tag, status="301 Moved")
+                    "/Russian/blog/tags/%s.html" % rtag.replace(' ', '_'),
+                    status="301 Moved")
                 sys.exit()
             status = "404 Tag not found"
             title = "Ошибка!"
@@ -44,7 +48,7 @@ else:
             from tags import find_tags
             posts = find_tags(tree)
             status = None
-            title = "Записи, найденные для выражения " + mycgi.escape(q)
+            title = "Записи, найденные для выражения " + escape(q)
             if posts:
                 _posts = ["""\
     <p class="head">