def load_app(self, app_path, app_full_name): logger = get_main_logger() site_name = self._first_djangoproject_dir(app_path) os.environ['DJANGO_SETTINGS_MODULE'] = '%s.settings' % site_name logger.debug("Using DJANGO_SETTINGS_MODULE = %s" % os.environ['DJANGO_SETTINGS_MODULE']) new_sys_path = os.path.join(app_path, site_name) logger.debug("Adding %s to sys.path" % new_sys_path) sys.path.insert(0, new_sys_path) import django.core.handlers.wsgi return django.core.handlers.wsgi.WSGIHandler()
def load_app(self, app_path, app_full_name): logger = get_main_logger() site_name = os.listdir(app_path)[0] os.environ['DJANGO_SETTINGS_MODULE'] = '%s.settings' % site_name logger.debug("Using DJANGO_SETTINGS_MODULE = %s" % os.environ['DJANGO_SETTINGS_MODULE']) new_sys_path = os.path.join(app_path, site_name) logger.debug("Adding %s to sys.path" % new_sys_path) sys.path.insert(0, new_sys_path) import django.core.handlers.wsgi return django.core.handlers.wsgi.WSGIHandler()
def load_app(self, app_path, app_full_name = None): logger = get_main_logger() # Since we receive here --app-path + app/, we need to remove the last part # because django.json lives in --app-path wsgidapp_path = os.path.dirname(app_path) extra = self._load_django_extra_options(wsgidapp_path) site_name = self._first_djangoproject_dir(app_path) os.environ['DJANGO_SETTINGS_MODULE'] = '{0}.settings'.format(site_name) logger.debug("Using DJANGO_SETTINGS_MODULE = {0}".format(os.environ['DJANGO_SETTINGS_MODULE'])) new_syspath = os.path.join(app_path, site_name) logger.debug("Adding {0} to sys.path".format(app_path)) sys.path.append(app_path) logger.debug("Adding {0} to sys.path".format(new_syspath)) sys.path.append(new_syspath) # Here we force django to load the app settings settings._some_value = True # Clean up del settings._some_value for k,v in extra.items(): setting_value = None if hasattr(settings, k): setting_value = getattr(settings, k) if isinstance(v, dict) and setting_value and isinstance(setting_value, dict): for k2, v2 in v.items(): getattr(settings, k)[k2] = v2 elif isinstance(v, list) and setting_value and isinstance(setting_value, list): setting_value += v elif isinstance(v, list) and setting_value and isinstance(setting_value, tuple): #Since we cannot modify the original tuple, we must re-create it setattr(settings, k, setting_value + tuple(v)) else: setattr(settings, k, v) import django.core.handlers.wsgi return django.core.handlers.wsgi.WSGIHandler()
from wsgid.loaders import IAppLoader from wsgid.core import Plugin, get_main_logger from django.conf import settings import os import sys import simplejson log = get_main_logger() class DjangoAppLoader(Plugin): implements = [IAppLoader] def _not_hidden_folder(self, name): return not name.startswith('.') def _valid_dirs(self, app_path): return sorted(filter(self._not_hidden_folder, os.listdir(app_path))) def _first_djangoproject_dir(self, app_path): dirs = self._valid_dirs(app_path) log.debug("{0} Possible valid djangoapp folders: {1}".format(len(dirs), dirs)) for d in dirs: settings_path = os.path.join(app_path, d, 'settings.py') init_path = os.path.join(app_path, d, '__init__.py') if os.path.exists(settings_path) and os.path.exists(init_path): return d return None