Changeset - f7c403e89d5b
[Not reviewed]
default
0 1 0
Marcin Kuzminski - 16 years ago 2010-04-28 01:55:34
marcin@python-works.com
updated appglobals, to handle only the baseui config. removed hg app from it
1 file changed with 3 insertions and 70 deletions:
0 comments (0 inline, 0 general)
pylons_app/lib/app_globals.py
Show inline comments
 
"""The application's Globals object"""
 
#uncomment the following if you want to serve a single repo
 
#from mercurial.hgweb.hgweb_mod import hgweb
 
from mercurial.hgweb.hgwebdir_mod import hgwebdir
 
from mercurial import templater
 
from mercurial.hgweb.request import wsgiapplication
 
from mercurial import ui, config
 
import os
 
from beaker.cache import CacheManager
 
from beaker.util import parse_cache_config_options
 
from pylons_app.lib.utils import make_ui
 

	
 
class Globals(object):
 

	
 
    """Globals acts as a container for objects available throughout the
 
    life of the application
 

	
 
@@ -20,73 +17,9 @@ class Globals(object):
 
        """One instance of Globals is created during application
 
        initialization and is available during requests via the
 
        'app_globals' variable
 

	
 
        """
 
        self.cache = CacheManager(**parse_cache_config_options(config))
 
        self.baseui = self.make_ui('hgwebdir.config')
 

	
 

	
 
    def make_ui(self, path='hgwebdir.config'):        
 
        """
 
        A funcion that will read python rc files and make an ui from read options
 
        
 
        @param path: path to mercurial config file
 
        """
 
        #propagated from mercurial documentation
 
        sections = [
 
                    'alias',
 
                    'auth',
 
                    'decode/encode',
 
                    'defaults',
 
                    'diff',
 
                    'email',
 
                    'extensions',
 
                    'format',
 
                    'merge-patterns',
 
                    'merge-tools',
 
                    'hooks',
 
                    'http_proxy',
 
                    'smtp',
 
                    'patch',
 
                    'paths',
 
                    'profiling',
 
                    'server',
 
                    'trusted',
 
                    'ui',
 
                    'web',
 
                    ]
 
    
 
        repos = path
 
        baseui = ui.ui()
 
        cfg = config.config()
 
        cfg.read(repos)
 
        self.paths = cfg.items('paths')
 
        self.baseui = make_ui('hgwebdir.config')
 
        self.paths = self.baseui.configitems('paths')
 
        self.base_path = self.paths[0][1].replace('*', '')
 
        self.check_repo_dir(self.paths)
 
        self.set_statics(cfg)
 
    
 
        for section in sections:
 
            for k, v in cfg.items(section):
 
                baseui.setconfig(section, k, v)
 
        
 
        return baseui
 

	
 
    def set_statics(self, cfg):
 
        '''
 
        set's the statics for use in mako templates
 
        @param cfg:
 
        '''
 
        self.statics = cfg.get('web', 'staticurl', '/static')
 
        if not self.statics.endswith('/'):
 
            self.statics += '/'
 

	
 

	
 
    def check_repo_dir(self, paths):
 
        repos_path = paths[0][1].split('/')
 
        if repos_path[-1] in ['*', '**']:
 
            repos_path = repos_path[:-1]
 
        if repos_path[0] != '/':
 
            repos_path[0] = '/'
 
        if not os.path.isdir(os.path.join(*repos_path)):
 
            raise Exception('Not a valid repository in %s' % paths[0][1])
 

	
0 comments (0 inline, 0 general)