Esempio n. 1
0
def setup_environ(args, settings_mod):
    logging.info('setup environ')
    args.append("-logging=none")
    tornado.options.parse_command_line(args)
    
    if '__init__.py' in settings_mod.__file__:
        p = os.path.dirname(settings_mod.__file__)
    else:
        p = settings_mod.__file__
    project_directory, settings_filename = os.path.split(p)
    if project_directory == os.curdir or not project_directory:
        project_directory = os.getcwd()
    project_name = os.path.basename(project_directory)

    # Strip filename suffix to get the module name.
    settings_name = os.path.splitext(settings_filename)[0]

    # Strip $py for Jython compiled files (like settings$py.class)
    if settings_name.endswith("$py"):
        settings_name = settings_name[:-3]

    # Set PLAY_SETTINGS_MODULE appropriately.
    # If PLAY_SETTINGS_MODULE is already set, use it.
    os.environ['PLAY_SETTINGS_MODULE'] = os.environ.get(
        'PLAY_SETTINGS_MODULE',
        '%s.%s' % (project_name, settings_name)
    )

    # Import the project module. We add the parent directory to PYTHONPATH to
    # avoid some of the path errors new users can have.
    sys.path.append(os.path.join(project_directory, os.pardir))
    importlib.import_module(project_name)
    sys.path.pop()
    
    #logging
    options.log_folder = os.path.join(settings_mod.root, "log")
    options.logging = settings_mod.site.logging
    logfy.setup_logger(options)
    #load modules
    register_module()
    #
    return project_directory
Esempio n. 2
0
    def __init__(self, settings_module):
        # update this dict from global settings (but only for ALL_CAPS settings)
        for setting in dir(global_settings):
            if not setting.startswith('__'):
                value = getattr(global_settings, setting)
                if value.__class__.__name__ not in self.exl_tokens:
                    setattr(self, setting, value)

        # store the settings module in case someone later cares
        self.SETTINGS_MODULE = settings_module

        try:
            mod = importlib.import_module(self.SETTINGS_MODULE)
        except ImportError, e:
            raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
Esempio n. 3
0
def register_module():
    """
    module should have attr {key}_proxy, key should be the configuration's key
    """
    from play.conf import settings
    logging.info('register global module')
    for key in settings.keys:
        conf = getattr(settings, key)
        if hasattr(conf, 'engine'):
            m = importlib.import_module(conf.engine)
            if not m:
                logging.info('missing module:%s' % conf.engine)
                continue
            func = getattr(m, key+"_proxy")
            if func:
                app_global.set(key, conf, func)
            else:
                logging.info('module %s miss attr %s_proxy' % (conf.engine, key))