From 0967965847e15ce189676516624a80c651c071a2 Mon Sep 17 00:00:00 2001 From: Dan Helfman Date: Mon, 17 Mar 2008 21:51:26 +0000 Subject: [PATCH] Implemented transition script to set the ranks for all users' notebooks. --- NEWS | 2 +- model/User.py | 2 +- tools/set_ranks.py | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100755 tools/set_ranks.py diff --git a/NEWS b/NEWS index c62fec0..10c46e3 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -1.2.14: March ??, 2008 +1.2.14: March 17, 2008 * Added ability to reorder notebooks on the right side of the page. * Fixed database transaction leak that was wasting memory. diff --git a/model/User.py b/model/User.py index 082c621..1d5a9b5 100644 --- a/model/User.py +++ b/model/User.py @@ -168,7 +168,7 @@ class User( Persistent ): return \ "insert into user_notebook ( user_id, notebook_id, read_write, owner, rank ) values " + \ - "( %s, %s, %s, %s );" % ( quote( self.object_id ), quote( notebook_id ), quote( read_write and 't' or 'f' ), + "( %s, %s, %s, %s, %s );" % ( quote( self.object_id ), quote( notebook_id ), quote( read_write and 't' or 'f' ), quote( owner and 't' or 'f' ), rank ) def sql_remove_notebook( self, notebook_id ): diff --git a/tools/set_ranks.py b/tools/set_ranks.py new file mode 100755 index 0000000..3084f44 --- /dev/null +++ b/tools/set_ranks.py @@ -0,0 +1,37 @@ +#!/usr/bin/python2.4 + +import os +import os.path +from controller.Database import Database +from model.Notebook import Notebook +from model.User import User + + +class Ranker( object ): + def __init__( self, database ): + self.database = database + + self.rank_notebooks() + self.database.commit() + + def rank_notebooks( self ): + users = self.database.select_many( User, u"select * from luminotes_user_current where username is not null and username != 'anonymous';" ) + + # rank the notebooks for each user + for user in users: + rank = 0 + notebooks = self.database.select_many( Notebook, user.sql_load_notebooks( parents_only = True, undeleted_only = True ) ) + + for notebook in notebooks: + self.database.execute( user.sql_update_notebook_rank( notebook.object_id, rank ), commit = False ) + rank += 1 + + +def main( args ): + database = Database() + ranker = Ranker( database ) + + +if __name__ == "__main__": + import sys + main( sys.argv[ 1: ] )