Changeset - f8ae5c1dfae2
[Not reviewed]
default
0 1 0
Marcin Kuzminski - 16 years ago 2010-04-29 00:29:49
marcin@python-works.com
Removed unneeded PATH_INFO manipulation, and added 404 codes on bad repositories paths
1 file changed with 12 insertions and 6 deletions:
0 comments (0 inline, 0 general)
pylons_app/lib/simplehg.py
Show inline comments
 
import os
 
from mercurial.hgweb import hgweb
 
from mercurial.hgweb.request import wsgiapplication
 
from pylons_app.lib.utils import make_ui
 
from pylons.controllers.util import abort
 
from webob.exc import HTTPNotFound
 
class SimpleHg(object):
 

	
 
    def __init__(self, application, config):
 
        self.application = application
 
        self.config = config
 
        
 
    def __call__(self, environ, start_response):
 
        if not is_mercurial(environ):
 
            return self.application(environ, start_response)
 
        else:
 
            #repo_name = environ['PATH_INFO'].replace('/', '')
 
            repo_name = environ['PATH_INFO'].split('/')[1]
 
            if not environ['PATH_INFO'].endswith == '/':
 
                environ['PATH_INFO'] += '/'
 
            #environ['SCRIPT_NAME'] = request.path
 
            try:
 
                repo_name = environ['PATH_INFO'].split('/')[1]
 
            except:
 
                return HTTPNotFound()(environ, start_response)
 
            
 
            #since we wrap into hgweb, just reset the 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)
 
            try:
 
                app = wsgiapplication(self._make_app)
 
            except Exception as e:
 
                return HTTPNotFound()(environ, start_response)
 
            return app(environ, start_response)            
 

	
 
    def _make_app(self):
 
        hgserve = hgweb(self.repo_path)
 
        return  self.load_web_settings(hgserve)
 
        
0 comments (0 inline, 0 general)