X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Fipsilon;h=46951a5a803263f97664c22cf0eaa0228bcc7488;hp=9fa370e3e630ef0b3a747ae1d266e4cf3012a962;hb=3fd51fe0d4593cdc39c28f11deafe27845f25584;hpb=904898b83d90d3d7f83c574b27a79b98a23e3734 diff --git a/ipsilon/ipsilon b/ipsilon/ipsilon index 9fa370e..46951a5 100755 --- a/ipsilon/ipsilon +++ b/ipsilon/ipsilon @@ -19,14 +19,28 @@ import sys sys.stdout = sys.stderr - +import glob import os import atexit import cherrypy -from ipsilon.util.data import Store +from ipsilon.util.data import AdminStore from ipsilon.util import page from ipsilon.root import Root -from jinja2 import Environment, FileSystemLoader +from jinja2 import Environment, FileSystemLoader, ChoiceLoader +import ipsilon.util.sessions + + +def nuke_session_locks(): + if cherrypy.config['tools.sessions.on']: + try: + sessdir = cherrypy.config['tools.sessions.storage_path'] + for l in glob.glob(os.path.join(sessdir, '*.lock')): + try: + os.remove(l) + except Exception: # pylint: disable=broad-except + pass + except Exception: # pylint: disable=broad-except + pass cfgfile = None if (len(sys.argv) > 1): @@ -38,17 +52,30 @@ elif os.path.isfile('/etc/ipsilon/ipsilon.conf'): else: raise IOError("Configuration file not found") +cherrypy.lib.sessions.SqlSession = ipsilon.util.sessions.SqlSession cherrypy.config.update(cfgfile) -datastore = Store() -admin_config = datastore.get_admin_config() +nuke_session_locks() + +datastore = AdminStore() +admin_config = datastore.load_config() for option in admin_config: cherrypy.config[option] = admin_config[option] -cherrypy.tools.protect = cherrypy.Tool('before_handler', page.protect) - -templates = os.path.join(cherrypy.config['base.dir'], 'templates') -template_env = Environment(loader=FileSystemLoader(templates)) +template_loaders = [] +default_template_dir = 'templates' +template_dir = cherrypy.config.get('template_dir', default_template_dir) +if template_dir.startswith('/'): + template_loaders.append(FileSystemLoader(template_dir)) +else: + template_loaders.append(FileSystemLoader( + os.path.join(cherrypy.config['base.dir'], + template_dir))) +# Fall-back to the default templates +template_loaders.append(FileSystemLoader( + os.path.join(cherrypy.config['base.dir'], + default_template_dir))) +template_env = Environment(loader=ChoiceLoader(template_loaders)) if __name__ == "__main__": conf = {'/': {'tools.staticdir.root': os.getcwd()},