diff --git a/roundup/instance.py b/roundup/instance.py
index b87334065a9589cf2a5cc1ea4235b3e752010c0c..81c946167c6e7a8c0c6815ff2f10a35d288aaf0c 100644 (file)
--- a/roundup/instance.py
+++ b/roundup/instance.py
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
#
-# $Id: instance.py,v 1.9 2002-09-20 01:20:31 richard Exp $
+# $Id: instance.py,v 1.12 2004-02-11 23:55:08 richard Exp $
-__doc__ = '''
-Tracker handling (open tracker).
+'''Tracker handling (open tracker).
-Currently this module provides one function: open. This function opens
-a tracker. Note that trackers used to be called instances.
+Backwards compatibility for the old-style "imported" trackers.
'''
+__docformat__ = 'restructuredtext'
+
+import os
+
+class Vars:
+ ''' I'm just a container '''
+
+class Tracker:
+ def __init__(self, tracker_home):
+ self.tracker_home = tracker_home
+ self.select_db = self._load_python('select_db.py')
+ self.config = self._load_config('config.py')
+ raise NotImplemented, 'this is *so* not finished'
+ self.init = XXX
+ self.Client = XXX
+ self.MailGW = XXX
+
+ def open(self):
+ return self._load_config('schema.py').db
+ self._load_config('security.py', db=db)
+
+
+ def _load_python(self, file):
+ file = os.path.join(tracker_home, file)
+ vars = Vars()
+ execfile(file, vars.__dict__)
+ return vars
-import imp, os
class TrackerError(Exception):
pass
-class Opener:
+
+class OldStyleTrackers:
def __init__(self):
self.number = 0
self.trackers = {}
Raise ValueError if the tracker home doesn't exist.
'''
+ import imp
# sanity check existence of tracker home
if not os.path.exists(tracker_home):
raise ValueError, 'no such directory: "%s"'%tracker_home
return tracker
-opener = Opener()
-open = opener.open
-
-del Opener
-del opener
+OldStyleTrackers = OldStyleTrackers()
+def open(tracker_home):
+ if os.path.exists(os.path.join(tracker_home, 'dbinit.py')):
+ # user should upgrade...
+ return OldStyleTrackers.open(tracker_home)
+ return Tracker(tracker_home)
# vim: set filetype=python ts=4 sw=4 et si