def open(self, tracker_home, optimize=0): """Open the tracker. Parameters: tracker_home: tracker home directory optimize: if set, precompile html templates 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 # sanity check tracker home contents for reqd in 'config dbinit select_db interfaces'.split(): if not os.path.exists(os.path.join(tracker_home, '%s.py'%reqd)): raise TrackerError, 'File "%s.py" missing from tracker '\ 'home "%s"'%(reqd, tracker_home) if self.trackers.has_key(tracker_home): return imp.load_package(self.trackers[tracker_home], tracker_home) # register all available backend modules backends.list_backends() self.number = self.number + 1 modname = '_roundup_tracker_%s'%self.number self.trackers[tracker_home] = modname # load the tracker tracker = imp.load_package(modname, tracker_home) # ensure the tracker has all the required bits for required in 'open init Client MailGW'.split(): if not hasattr(tracker, required): raise TrackerError, \ 'Required tracker attribute "%s" missing'%required # load and apply the config tracker.config = configuration.CoreConfig(tracker_home) tracker.dbinit.config = tracker.config tracker.optimize = optimize tracker.templates = templating.get_loader(tracker.config["TEMPLATES"]) if optimize: tracker.templates.precompile() return tracker
def open(self, tracker_home, optimize=0): """Open the tracker. Parameters: tracker_home: tracker home directory optimize: if set, precompile html templates 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) # sanity check tracker home contents for reqd in 'config dbinit select_db interfaces'.split(): if not os.path.exists(os.path.join(tracker_home, '%s.py' % reqd)): raise TrackerError('File "%s.py" missing from tracker '\ 'home "%s"'%(reqd, tracker_home)) if tracker_home in self.trackers: return imp.load_package(self.trackers[tracker_home], tracker_home) # register all available backend modules backends.list_backends() self.number = self.number + 1 modname = '_roundup_tracker_%s' % self.number self.trackers[tracker_home] = modname # load the tracker tracker = imp.load_package(modname, tracker_home) # ensure the tracker has all the required bits for required in 'open init Client MailGW'.split(): if not hasattr(tracker, required): raise TrackerError('Required tracker attribute "%s" missing' % required) # load and apply the config tracker.config = configuration.CoreConfig(tracker_home) tracker.dbinit.config = tracker.config tracker.optimize = optimize tracker.templates = templating.get_loader(tracker.config["TEMPLATES"]) if optimize: tracker.templates.precompile() return tracker
def __init__(self, tracker_home, optimize=0): """New-style tracker instance constructor Parameters: tracker_home: tracker home directory optimize: if set, precompile html templates """ self.tracker_home = tracker_home self.optimize = optimize # if set, call schema_hook after executing schema.py will get # same variables (in particular db) as schema.py main purpose is # for regression tests self.schema_hook = None self.config = configuration.CoreConfig(tracker_home) self.actions = {} self.cgi_actions = {} self.templating_utils = {} libdir = os.path.join(self.tracker_home, 'lib') self.libdir = os.path.isdir(libdir) and libdir or '' self.load_interfaces() self.templates = templating.get_loader(self.config["TEMPLATES"], self.config["TEMPLATE_ENGINE"]) rdbms_backend = self.config.RDBMS_BACKEND self.backend = backends.get_backend(rdbms_backend) if self.optimize: self.templates.precompile() # initialize tracker extensions for extension in self.get_extensions('extensions'): extension(self) # load database schema self.schema = self._compile('schema.py') # load database detectors self.detectors = self.get_extensions('detectors') # db_open is set to True after first open() self.db_open = 0
def __init__(self, tracker_home, optimize=0): """New-style tracker instance constructor Parameters: tracker_home: tracker home directory optimize: if set, precompile html templates """ self.tracker_home = tracker_home self.optimize = optimize # if set, call schema_hook after executing schema.py will get # same variables (in particular db) as schema.py main purpose is # for regression tests self.schema_hook = None self.config = configuration.CoreConfig(tracker_home) self.actions = {} self.cgi_actions = {} self.templating_utils = {} libdir = os.path.join(self.tracker_home, 'lib') self.libdir = os.path.isdir(libdir) and libdir or '' self.load_interfaces() self.templates = templating.get_loader(self.config["TEMPLATES"], self.config["TEMPLATE_ENGINE"]) self.backend = backends.get_backend(self.get_backend_name()) if self.optimize: self.templates.precompile() # initialize tracker extensions for extension in self.get_extensions('extensions'): extension(self) # load database schema self.schema = self._compile('schema.py') # load database detectors self.detectors = self.get_extensions('detectors') # db_open is set to True after first open() self.db_open = 0
def __init__(self, tracker_home, optimize=0): """New-style tracker instance constructor Parameters: tracker_home: tracker home directory optimize: if set, precompile html templates """ self.tracker_home = tracker_home self.optimize = optimize # if set, call schema_hook after executing schema.py will get # same variables (in particular db) as schema.py main purpose is # for regression tests self.schema_hook = None self.config = configuration.CoreConfig(tracker_home) self.actions = {} self.cgi_actions = {} self.templating_utils = {} libdir = os.path.join(self.tracker_home, 'lib') self.libdir = os.path.isdir(libdir) and libdir or '' self.load_interfaces() self.templates = templating.get_loader(self.config["TEMPLATES"], self.config["TEMPLATE_ENGINE"]) rdbms_backend = self.config.RDBMS_BACKEND # TODO: Remove in v1.7 # Provide some backwards compatability for existing Roundup instances # that still define the backend type in 'db/backend_name' and warn the # users they need to update their config.ini if rdbms_backend == '': filename = os.path.join(self.config.DATABASE, 'backend_name') msg = """\n The 'backend_name' file is no longer used to configure the database backend used for the tracker. Please read 'doc/upgrading.txt' to find out how to update your config.ini """ try: with open(filename) as backend_file: rdbms_backend = backend_file.readline().strip() with warnings.catch_warnings(): warnings.simplefilter("once", DeprecationWarning) warnings.warn(msg, DeprecationWarning, stacklevel=2) except IOError: pass self.backend = backends.get_backend(rdbms_backend) if self.optimize: self.templates.precompile() # initialize tracker extensions for extension in self.get_extensions('extensions'): extension(self) # load database schema self.schema = self._compile('schema.py') # load database detectors self.detectors = self.get_extensions('detectors') # db_open is set to True after first open() self.db_open = 0
def __init__(self, tracker_home, optimize=0): """New-style tracker instance constructor Parameters: tracker_home: tracker home directory optimize: if set, precompile html templates """ self.tracker_home = tracker_home self.optimize = optimize # if set, call schema_hook after executing schema.py will get # same variables (in particular db) as schema.py main purpose is # for regression tests self.schema_hook = None self.config = configuration.CoreConfig(tracker_home) self.actions = {} self.cgi_actions = {} self.templating_utils = {} libdir = os.path.join(self.tracker_home, 'lib') self.libdir = os.path.isdir(libdir) and libdir or '' self.load_interfaces() self.templates = templating.get_loader(self.config["TEMPLATES"], self.config["TEMPLATE_ENGINE"]) rdbms_backend = self.config.RDBMS_BACKEND # TODO: Remove in v1.7 # Provide some backwards compatability for existing Roundup instances # that still define the backend type in 'db/backend_name' and warn the # users they need to update their config.ini if rdbms_backend == '': filename = os.path.join(self.config.DATABASE, 'backend_name') msg = """\n The 'backend_name' file is no longer used to configure the database backend used for the tracker. Please read 'doc/upgrading.txt' to find out how to update your config.ini """ try: with file(filename) as backend_file: rdbms_backend = backend_file.readline().strip() with warnings.catch_warnings(): warnings.simplefilter("once", DeprecationWarning) warnings.warn(msg, DeprecationWarning, stacklevel=2) except IOError: pass self.backend = backends.get_backend(rdbms_backend) if self.optimize: self.templates.precompile() # initialize tracker extensions for extension in self.get_extensions('extensions'): extension(self) # load database schema self.schema = self._compile('schema.py') # load database detectors self.detectors = self.get_extensions('detectors') # db_open is set to True after first open() self.db_open = 0