__copyright__ = "Copyright (C) 2014-2024 PhiloSoft Design"
__license__ = "GNU GPL"
-import cgi
+from html import escape
+from urllib.parse import parse_qs
+import os
import sys
from lark import ParseError
-from html.response import redirect, response
+from html_output.response import redirect, response
from parser import parser
-form = cgi.FieldStorage()
-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:
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 = "Ошибка!"
from tags import find_tags
posts = find_tags(tree)
status = None
- title = "Записи, найденные для выражения " + cgi.escape(q)
+ title = "Записи, найденные для выражения " + escape(q)
if posts:
_posts = ["""\
<p class="head">