Mercurial > public > src > rhodecode
view pylons_app/lib/app_globals.py @ 20:bbaab7501c1a
Added custom templates, did over check of code to make it work.
Added templating for add repository, and styling. App globals now handles our custom static files. (logo etc can be changed)
author | Marcin Kuzminski |
---|---|
date | Sun, 28 Feb 2010 01:52:38 +0100 |
parents | 525ed90e4577 |
children | 2963f2894a7a |
line wrap: on
line source
"""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 class Globals(object): """Globals acts as a container for objects available throughout the life of the application """ def __init__(self): """One instance of Globals is created during application initialization and is available during requests via the 'app_globals' variable """ #two ways of building the merc app i don't know #the fastest one but belive the wsgiapp is better #self.hgapp = self.make_web_app() self.hgapp = wsgiapplication(self.make_web_app) def make_web_app(self): repos = "hgwebdir.config" baseui = ui.ui() cfg = config.config() cfg.read(repos) paths = cfg.items('paths') self.check_repo_dir(paths) self.set_statics(cfg) for k, v in cfg.items('web'): baseui.setconfig('web', k, v) #magic trick to make our custom template dir working templater.path.append(cfg.get('web', 'templates', None)) hgwebapp = hgwebdir(paths, baseui = baseui) return hgwebapp 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])