X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;ds=inline;f=search-tags.py;h=a844960b2f4601016de12085a5b0d4cc9c82790a;hb=bee03d50e5a6c083962d5d855cea5445bc015472;hp=fe006bfd5b69f41d1759baa56b8905ad1da58893;hpb=3b4b17a0587b0bbe4b5582e050d5b57a783092ac;p=phdru.name%2Fcgi-bin%2Fblog-ru%2Fsearch-tags.git
diff --git a/search-tags.py b/search-tags.py
index fe006bf..a844960 100755
--- a/search-tags.py
+++ b/search-tags.py
@@ -1,19 +1,21 @@
-#! /usr/bin/env python
+#! /usr/bin/env python3
# coding: koi8-r
"""Search tags CGI"""
__author__ = "Oleg Broytman "
-__copyright__ = "Copyright (C) 2014 PhiloSoft Design"
+__copyright__ = "Copyright (C) 2014-2024 PhiloSoft Design"
__license__ = "GNU GPL"
-import cgi, sys
-from ply.lex import LexError
+import cgi
+import sys
+
+from lark import ParseError
from html.response import redirect, response
-from parser.parser import parser
+from parser import parser
form = cgi.FieldStorage()
-if not form.has_key('q'):
+if 'q' not in form:
status = "400 Bad request"
title = "Error!"
body = "Required parameter is missing!"
@@ -22,40 +24,43 @@ else:
q = form['q'].value
try:
tree = parser.parse(q)
- except LexError:
- tree = None
- if tree is None:
+ except ParseError:
status = "400 Bad request"
title = "Error!"
body = "Bad query syntax!"
- elif tree[0] == 'NAME': # Single tag - just do redirect
- tag = tree[1]
- assert isinstance(tag, str)
- from tags import tag_exists
- if tag_exists(tag):
- redirect("/Russian/blog/tags/%s.html" % tag, status="301 Moved")
- sys.exit()
- status = "404 Tag not found"
- title = "ïÛÉÂËÁ!"
- body = "ôÅÇ %s ÎÅ ÓÕÝÅÓÔ×ÕÅÔ!" % tag
- else: # Process tree
- from tags import find_tags
- posts = find_tags(tree)
- status = None
- title = "úÁÐÉÓÉ, ÎÁÊÄÅÎÎÙÅ ÄÌÑ ×ÙÒÁÖÅÎÉÑ " + q
- if posts:
- _posts = ["""\
-
-
-"""]
- for year, month, day, suburl, _title in posts:
- _posts.append('- %s-%s-%s %s
\n' % (year, month, day, suburl, _title))
- _posts .append("""\
-
-
-""")
- body = ''.join(_posts)
- else:
- body = "îÅ ÎÁÊÄÅÎÏ ÎÉ ÏÄÎÏÊ ÚÁÐÉÓÉ."
+ 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):
+ redirect(
+ "/Russian/blog/tags/%s.html" % tag, status="301 Moved")
+ sys.exit()
+ status = "404 Tag not found"
+ title = "ïÛÉÂËÁ!"
+ body = "ôÅÇ %s ÎÅ ÓÕÝÅÓÔ×ÕÅÔ!" % tag
+ else: # Process tree
+ from tags import find_tags
+ posts = find_tags(tree)
+ status = None
+ title = "úÁÐÉÓÉ, ÎÁÊÄÅÎÎÙÅ ÄÌÑ ×ÙÒÁÖÅÎÉÑ " + cgi.escape(q)
+ if posts:
+ _posts = ["""\
+
+
+ """]
+ for year, month, day, suburl, _title in posts:
+ _posts.append(
+ '- %s-%s-%s '
+ '%s
\n'
+ % (year, month, day, suburl, _title))
+ _posts .append("""\
+
+
+ """)
+ body = ''.join(_posts)
+ else:
+ body = "îÅ ÎÁÊÄÅÎÏ ÎÉ ÏÄÎÏÊ ÚÁÐÉÓÉ."
response(title, body, status)