コード例 #1
0
ファイル: djangoloader.py プロジェクト: pombredanne/wsgid
  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()
コード例 #2
0
    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()
コード例 #3
0
ファイル: djangoloader.py プロジェクト: lwc/wsgid
  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()
コード例 #4
0
ファイル: djangoloader.py プロジェクト: lwc/wsgid


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