From 233a95c31d244fac7aef086820493f950209ec0a Mon Sep 17 00:00:00 2001 From: Dan Helfman Date: Wed, 5 Nov 2008 14:37:53 -0800 Subject: [PATCH] Based tool to convert file-based sessions to database-backed sessions. --- tools/convert_sessions.py | 51 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 tools/convert_sessions.py diff --git a/tools/convert_sessions.py b/tools/convert_sessions.py new file mode 100644 index 0000000..3b783a9 --- /dev/null +++ b/tools/convert_sessions.py @@ -0,0 +1,51 @@ +# Basic script to convert file-based CherryPy sessions to PostgreSQL-backed sessions. + +import os +import cPickle as pickle +from controller.Database import Database +from controller.Session_storage import Session_storage + + +def main( args ): + import cherrypy + from config import Common + + cherrypy.config.update( Common.settings ) + + if args and "-d" in args: + from config import Development + settings = Development.settings + else: + from config import Production + settings = Production.settings + + cherrypy.config.update( settings ) + + database = Database( + host = cherrypy.config.configMap[ u"global" ].get( u"luminotes.db_host" ), + ssl_mode = cherrypy.config.configMap[ u"global" ].get( u"luminotes.db_ssl_mode" ), + data_dir = ".", + ) + + class Stub_root( object ): + def __init__( self, database ): + self.database = database + + cherrypy.root = Stub_root( database ) + sessions = Session_storage() + session_count = 0 + + for session_filename in os.listdir( u"session/" ): + pickled_data = file( u"session/%s" % session_filename ).read() + ( data, expiration_time ) = pickle.loads( pickled_data ) + session_id = data[ u"_id" ] + + sessions.save( session_id, data, expiration_time ) + session_count += 1 + + print "converted %d sessions" % session_count + + +if __name__ == "__main__": + import sys + main( sys.argv[ 1: ] )