[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