Mercurial > public > src > rhodecode
diff pylons_app/lib/simplehg.py @ 114:cc5cf1a93902
Implemented simplehg middleware,moved make_ui functions to lib.utils
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 28 Apr 2010 02:08:45 +0200 |
parents | 70b1e5d1e20d |
children | 345811faa8a0 |
line wrap: on
line diff
--- a/pylons_app/lib/simplehg.py Wed Apr 28 01:56:11 2010 +0200 +++ b/pylons_app/lib/simplehg.py Wed Apr 28 02:08:45 2010 +0200 @@ -1,13 +1,7 @@ import os - -import cgi -from mercurial import util -from mercurial.hgweb.request import wsgirequest, normalize from mercurial.hgweb import hgweb -from pylons.controllers.util import Response from mercurial.hgweb.request import wsgiapplication - - +from pylons_app.lib.utils import make_ui class SimpleHg(object): def __init__(self, application, config): @@ -18,14 +12,33 @@ if not is_mercurial(environ): return self.application(environ, start_response) else: - from pprint import pprint - pprint(environ) + repo_name = environ['PATH_INFO'].replace('/', '') + if not environ['PATH_INFO'].endswith == '/': + environ['PATH_INFO'] += '/' + #environ['SCRIPT_NAME'] = request.path + environ['PATH_INFO'] = '/' + self.baseui = make_ui() + self.basepath = self.baseui.configitems('paths')[0][1].replace('*', '') + self.repo_path = os.path.join(self.basepath, repo_name) + app = wsgiapplication(self._make_app) + return app(environ, start_response) - repo_path = os.path.join('/home/marcink/python_workspace/', environ['PATH_INFO'].replace('/', '')) - def _make_app():return hgweb(repo_path, "Name") - app = wsgiapplication(_make_app) - return app(environ, start_response) + def _make_app(self): + hgserve = hgweb(self.repo_path) + return self.load_web_settings(hgserve) + + def load_web_settings(self, hgserve): + repoui = make_ui(os.path.join(self.repo_path, '.hg', 'hgrc'), False) + #set the global ui for hgserve + hgserve.repo.ui = self.baseui + + if repoui: + #set the repository based config + hgserve.repo.ui = repoui + + return hgserve + def is_mercurial(environ): """ Returns True if request's target is mercurial server - header @@ -35,3 +48,5 @@ if http_accept and http_accept.startswith('application/mercurial'): return True return False + +