##// END OF EJS Templates
moved get_form_error to base
moved get_form_error to base

File last commit:

r171:52bbeb1e default
r176:8dd7305f default
Show More
simplehg.py
64 lines | 2.3 KiB | text/x-python | PythonLexer
simplehg, cleanup
r111 import os
from mercurial.hgweb import hgweb
from mercurial.hgweb.request import wsgiapplication
Added universal cache invalidator for two cached functions....
r171 from pylons_app.lib.utils import make_ui, invalidate_cache
Removed unneeded PATH_INFO manipulation, and added 404 codes on bad repositories paths
r124 from pylons.controllers.util import abort
from webob.exc import HTTPNotFound
simplehg, cleanup
r111 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:
Removed unneeded PATH_INFO manipulation, and added 404 codes on bad repositories paths
r124 try:
repo_name = environ['PATH_INFO'].split('/')[1]
except:
return HTTPNotFound()(environ, start_response)
#since we wrap into hgweb, just reset the path
Implemented simplehg middleware,moved make_ui functions to lib.utils
r114 environ['PATH_INFO'] = '/'
self.baseui = make_ui()
Added universal cache invalidator for two cached functions....
r171 self.basepath = self.baseui.configitems('paths')[0][1]\
.replace('*', '')
Implemented simplehg middleware,moved make_ui functions to lib.utils
r114 self.repo_path = os.path.join(self.basepath, repo_name)
Removed unneeded PATH_INFO manipulation, and added 404 codes on bad repositories paths
r124 try:
app = wsgiapplication(self._make_app)
except Exception as e:
return HTTPNotFound()(environ, start_response)
Added universal cache invalidator for two cached functions....
r171
"""we know that some change was made to repositories and we should
invalidate the cache to see the changes right away"""
invalidate_cache('full_changelog', repo_name)
Implemented simplehg middleware,moved make_ui functions to lib.utils
r114 return app(environ, start_response)
simplehg, cleanup
r111
Implemented simplehg middleware,moved make_ui functions to lib.utils
r114 def _make_app(self):
hgserve = hgweb(self.repo_path)
return self.load_web_settings(hgserve)
simplehg, cleanup
r111
Implemented simplehg middleware,moved make_ui functions to lib.utils
r114 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
simplehg, cleanup
r111 def is_mercurial(environ):
"""
Returns True if request's target is mercurial server - header
``HTTP_ACCEPT`` of such request would start with ``application/mercurial``.
"""
http_accept = environ.get('HTTP_ACCEPT')
if http_accept and http_accept.startswith('application/mercurial'):
return True
return False
Implemented simplehg middleware,moved make_ui functions to lib.utils
r114