]> git.phdru.name Git - phdru.name/cgi-bin/blog-ru/search-tags.git/blobdiff - search-tags.py
Process single tag
[phdru.name/cgi-bin/blog-ru/search-tags.git] / search-tags.py
index cbac10c6bbdac3eee8d9b171667938976afdfeeb..8d322d12057ed3290646c67c3c99b94846a6e877 100755 (executable)
@@ -5,9 +5,11 @@ __author__ = "Oleg Broytman <phd@phdru.name>"
 __copyright__ = "Copyright (C) 2014 PhiloSoft Design"
 __license__ = "GNU GPL"
 
-import cgi
-from parse_query import parser
-from html.response import response
+import cgi, sys
+from ply.lex import LexError
+
+from html.response import redirect, response
+from parser.parser import parser
 
 form = cgi.FieldStorage()
 if not form.has_key('q'):
@@ -15,4 +17,25 @@ if not form.has_key('q'):
     title = "Error!"
     body = "Required parameter is missing!"
 
+else:
+    q = form['q'].value
+    try:
+        tree = parser.parse(q)
+    except LexError:
+        tree = None
+    if tree is None:
+        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 = "Error!"
+        body = "Tag does not exist!"
+
 response(title, body, status)