X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=search-tags.py;h=fec3705e91fa0a710cd8b687f8e14cf8a5edfd5f;hb=7affd5882b4c0af22bddb5916fae47da166987af;hp=35fd288773e0b5f34f8ed4ece6a333fa967c4d99;hpb=cfbfec9a97de714aa89aa3ebbbf1e09221c986e8;p=phdru.name%2Fcgi-bin%2Fblog-ru%2Fsearch-tags.git diff --git a/search-tags.py b/search-tags.py index 35fd288..fec3705 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 sys + +from lark import ParseError +import mycgi from html.response import redirect, response -from parser.parser import parser +from parser import parser -form = cgi.FieldStorage() -if not form.has_key('q'): +form = mycgi.Form() +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 = ["""\ -

-

-

-""") - 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 = "úÁÐÉÓÉ, ÎÁÊÄÅÎÎÙÅ ÄÌÑ ×ÙÒÁÖÅÎÉÑ " + mycgi.escape(q) + if posts: + _posts = ["""\ +

+

+

+ """) + body = ''.join(_posts) + else: + body = "îÅ ÎÁÊÄÅÎÏ ÎÉ ÏÄÎÏÊ ÚÁÐÉÓÉ." response(title, body, status)