Edgewall Software

Ticket #2661: mod_python_subprocess_options.patch

File mod_python_subprocess_options.patch, 1.9 KB (added by mgood, 2 years ago)

try reading TRAC_ENV from the environment if mod_python's TracEnv is not set

  • trac/web/main.py

     
    264264    """ 
    265265    if 'mod_python.options' in environ: 
    266266        options = environ['mod_python.options'] 
    267         environ.setdefault('trac.env_path', options.get('TracEnv')) 
     267        subprocess_env = environ.get('mod_python.subprocess_env', {}) 
     268        def get_opt(opt_name, env_name): 
     269            try: 
     270                return options[opt_name] 
     271            except KeyError: 
     272                return subprocess_env.get(env_name) 
     273        environ.setdefault('trac.env_path', get_opt('TracEnv', 'TRAC_ENV')) 
    268274        environ.setdefault('trac.env_parent_dir', 
    269                            options.get('TracEnvParentDir')) 
     275                           get_opt('TracEnvParentDir', 'TRAC_ENV_PARENT_DIR')) 
    270276        environ.setdefault('trac.env_index_template', 
    271                            options.get('TracEnvIndexTemplate')) 
     277                           get_opt('TracEnvIndexTemplate', 
     278                                   'TRAC_ENV_INDEX_TEMPLATE')) 
    272279        environ.setdefault('trac.template_vars', 
    273                            options.get('TracTemplateVars')) 
     280                           get_opt('TracTemplateVars', 'TRAC_TEMPLATE_VARS')) 
    274281        environ.setdefault('trac.locale', options.get('TracLocale')) 
    275282 
    276283        if 'TracUriRoot' in options: 
     
    340347                               '"TRAC_ENV_PARENT_DIR" or the mod_python ' 
    341348                               'options "TracEnv" or "TracEnvParentDir" are ' 
    342349                               'missing. Trac requires one of these options ' 
    343                                'to locate the Trac environment(s).') 
     350                               'to locate the Trac environment(s). %r' % environ['mod_python.subprocess_env']) 
    344351    env = _open_environment(env_path, run_once=environ['wsgi.run_once']) 
    345352 
    346353    if env.base_url: