1 #! /usr/bin/env python3
5 __author__ = "Oleg Broytman <phd@phdru.name>"
6 __copyright__ = "Copyright (C) 2014-2024 PhiloSoft Design"
7 __license__ = "GNU GPL"
9 from html import escape
10 from urllib.parse import parse_qs
14 from lark import ParseError
16 from html_output.response import redirect, response
17 from parser import parser
19 qs_dict = parse_qs(os.environ['QUERY_STRING'], encoding='koi8-r')
20 if 'q' not in qs_dict or len(qs_dict['q']) > 1:
21 status = "400 Bad request"
23 body = "Required parameter is missing!"
28 tree = parser.parse(q)
30 status = "400 Bad request"
32 body = "Bad query syntax!"
34 if tree[0] == 'NAME': # Single tag - just do redirect
36 assert isinstance(tag, str)
37 from tags import real_tag
41 "/Russian/blog/tags/%s.html" % rtag.replace(' ', '_'),
44 status = "404 Tag not found"
46 body = "Тег %s не существует!" % tag
48 from tags import find_tags
49 posts = find_tags(tree)
51 title = "Записи, найденные для выражения " + escape(q)
57 for year, month, day, suburl, _title in posts:
60 '<a href="../../../../Russian/blog/%s">%s</a></li>\n'
61 % (year, month, day, suburl, _title))
66 body = ''.join(_posts)
68 body = "Не найдено ни одной записи."
70 response(title, body, status)