##// END OF EJS Templates
full changelog caching, secured changelog with LoginRequired, some minor changes in graph
full changelog caching, secured changelog with LoginRequired, some minor changes in graph

File last commit:

r171:52bbeb1e default
r192:f191f99f default
Show More
utils.py
125 lines | 3.7 KiB | text/x-python | PythonLexer
Implemented simplehg middleware,moved make_ui functions to lib.utils
r114 import os
import logging
Moved check_repo function to utils, error controller check for first name in url, for this repo and only prints 404 make repo template if repo does not exists, moded check repo from admin
r125 from mercurial import ui, config, hg
from mercurial.error import RepoError
log = logging.getLogger(__name__)
Marcin Kuzminski
Moved summary to seperate controller,...
r82 def get_repo_slug(request):
path_info = request.environ.get('PATH_INFO')
added is mercurial method in utils,
r96 uri_lst = path_info.split('/')
added empty controllers for branches tags files graph, routing and test for them
r93 repo_name = uri_lst[1]
Marcin Kuzminski
Moved summary to seperate controller,...
r82 return repo_name
added is mercurial method in utils,
r96
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
def check_repo_dir(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])
Moved check_repo function to utils, error controller check for first name in url, for this repo and only prints 404 make repo template if repo does not exists, moded check repo from admin
r125
def check_repo(repo_name, base_path):
repo_path = os.path.join(base_path, repo_name)
try:
r = hg.repository(ui.ui(), repo_path)
hg.verify(r)
#here we hnow that repo exists it was verified
log.info('%s repo is already created', repo_name)
return False
#raise Exception('Repo exists')
except RepoError:
log.info('%s repo is free for creation', repo_name)
#it means that there is no valid repo there...
return True
Implemented simplehg middleware,moved make_ui functions to lib.utils
r114 def make_ui(path='hgwebdir.config', checkpaths=True):
"""
A funcion that will read python rc files and make an ui from read options
@param path: path to mercurial config file
"""
if not os.path.isfile(path):
Moved check_repo function to utils, error controller check for first name in url, for this repo and only prints 404 make repo template if repo does not exists, moded check repo from admin
r125 log.error('Unable to read config file %s' % path)
Implemented simplehg middleware,moved make_ui functions to lib.utils
r114 return False
#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',
]
baseui = ui.ui()
cfg = config.config()
cfg.read(path)
if checkpaths:check_repo_dir(cfg.items('paths'))
for section in sections:
for k, v in cfg.items(section):
baseui.setconfig(section, k, v)
return baseui
Added universal cache invalidator for two cached functions....
r171 def invalidate_cache(name, *args):
moved cache invalidating to utils, as seperate function. Implemented invalidating in
r140 from beaker.cache import region_invalidate
Added universal cache invalidator for two cached functions....
r171 log.info('INVALIDATING CACHE FOR %s', name)
"""propaget our arguments to make sure invalidation works. First
argument has to be the name of cached func name give to cache decorator
without that the invalidation would not work"""
tmp = [name]
tmp.extend(args)
args = tuple(tmp)
if name == 'cached_repo_list':
from pylons_app.lib.base import _get_repos_cached
region_invalidate(_get_repos_cached, None, *args)
if name == 'full_changelog':
from pylons_app.controllers.changelog import _full_changelog_cached
region_invalidate(_full_changelog_cached, None, *args)
Added empty changeset to use in newly created repository, and used this inside a hg model in repos list
r136 from vcs.backends.base import BaseChangeset
from vcs.utils.lazy import LazyProperty
class EmptyChangeset(BaseChangeset):
revision = -1
Implemented simplehg middleware,moved make_ui functions to lib.utils
r114
Added empty changeset to use in newly created repository, and used this inside a hg model in repos list
r136 @LazyProperty
def raw_id(self):
"""
Returns raw string identifing this changeset, useful for web
representation.
"""
return '0' * 12
Implemented simplehg middleware,moved make_ui functions to lib.utils
r114