[cvs-annodex] commit (/annodex): cmmlwiki/trunk/cmmlwiki/database.py cmmlwiki/trunk/cmmlwiki/redirect.py

conrad nobody at lists.annodex.net
Tue Jan 10 17:06:58 EST 2006


Update of /annodex (new revision 1770)

Modified files:
   cmmlwiki/trunk/cmmlwiki/database.py
   cmmlwiki/trunk/cmmlwiki/redirect.py

Log Message:
add redirections table, and make redirect.py use it
  + bump db_version to 3, and handle upgrades from cmmlwiki-admin


Modified: cmmlwiki/trunk/cmmlwiki/database.py
===================================================================
--- cmmlwiki/trunk/cmmlwiki/database.py	2006-01-10 05:30:49 UTC (rev 1769)
+++ cmmlwiki/trunk/cmmlwiki/database.py	2006-01-10 06:06:57 UTC (rev 1770)
@@ -17,8 +17,6 @@
 
 from cmmlwiki.environment import Environment
 
-db_version = 1
-
 class inspect(object):
     def __init__(self):
         env = Environment()
@@ -52,8 +50,26 @@
         row = self.cur.next()
         return row['sources.path']
 
+# Update db_version
+def set_db_version (cur, version):
+    sql = """INSERT INTO system (db_version)
+             VALUES (%s)""" % (version)
+    cur.execute (sql)
+
+# Upgrade from version 2 to 3
+def upgrade_3 (env, con, cur):
+
+    # Add rename table
+    sql = """ CREATE TABLE rename (
+              oldname CHAR,
+              newname CHAR
+              )"""
+    cur.execute (sql)
+
+    set_db_version (cur, 3)
+
 # Upgrade from version 1 to 2
-def upgrade_2(env, con, cur):
+def upgrade_2 (env, con, cur):
     def copy_meta (row, key, DC, head):
         if (row[key] != ''):
             sql = """INSERT INTO metas (name, content)
@@ -155,10 +171,7 @@
              FROM clips_temp"""
     cur.execute(sql)
 
-    # Update db_version
-    sql = """INSERT INTO system (db_version)
-             VALUES (%s)""" % (2)
-    cur.execute (sql)
+    set_db_version (cur, 2)
 
 def upgrade(env):
     db = env.db_filename()
@@ -170,8 +183,16 @@
     con = sqlite.connect(db, encoding='utf-8', autocommit=1)
     cur = con.cursor()
 
-    upgrade_2 (env, con, cur)
+    sql = "SELECT db_version FROM system"
+    cur.execute (sql)
+    row = cur.next()
 
+    db_version = row['db_version']
+    if (db_version < 2):
+        upgrade_2 (env, con, cur)
+    if (db_version < 3):
+        upgrade_3 (env, con, cur)
+
 def init(env):
     db = env.db_filename()
     if (os.path.exists (db)):
@@ -188,10 +209,6 @@
              )"""
     cur.execute(sql)
 
-    sql = """INSERT INTO system (db_version)
-             VALUES (%s)""" % (1)
-    cur.execute (sql)
-
     # Collections
     sql = """CREATE TABLE collections (
              ixk INTEGER PRIMARY KEY,
@@ -271,6 +288,9 @@
              )"""
     cur.execute(sql)
 
+    # Initialize db_version to 1
+    set_db_version (cur, 1)
+
     # Now, upgrade to the latest schema
     upgrade(env)
 

Modified: cmmlwiki/trunk/cmmlwiki/redirect.py
===================================================================
--- cmmlwiki/trunk/cmmlwiki/redirect.py	2006-01-10 05:30:49 UTC (rev 1769)
+++ cmmlwiki/trunk/cmmlwiki/redirect.py	2006-01-10 06:06:57 UTC (rev 1770)
@@ -14,10 +14,11 @@
 
 import os
 
+from cmmlwiki.database import inspect
 from cmmlwiki.utils import location
 
 def redirect (wikiname):
-    if (wikiname == "SPAM"):
+    def wiki_redirect (oldname, newname):
         server_name = os.getenv ('SERVER_NAME')
         server_port = os.getenv ('SERVER_PORT')
 
@@ -32,14 +33,28 @@
             server_port = ':' + server_port
 
         script_name = os.getenv ('SCRIPT_NAME')
-        redirect_path_info = '/SPUM'
 
         query_string = os.getenv ('QUERY_STRING')
         if (query_string != ''):
             query_string = '?' + query_string
         
-        new_location = method + server_name + server_port + script_name + redirect_path_info + query_string
+        new_location = method + server_name + server_port + script_name + '/' + newname + query_string
         location(new_location)
-        return True
-    else:
-        return False
+
+    # Begin
+    inspector = inspect ()
+
+    sql = """SELECT * FROM rename
+             WHERE oldname = "%s" """ % (wikiname)
+    inspector.cur.execute (sql)
+
+    try:
+      row = inspector.cur.next()
+      oldname = row['oldname']
+      newname = row['newname']
+
+      wiki_redirect (oldname, newname)
+
+      return True
+    except:
+      return False


-- 
conrad



More information about the cvs-annodex mailing list