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
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))
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))