Files
@ a86c8de926b4
Branch filter:
Location: kallithea/pylons_app/controllers/hg.py - annotation
a86c8de926b4
3.0 KiB
text/x-python
some fixes in graph tab. Little fixes in files
564e40829f80 564e40829f80 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 71ffa932799d aec4c0071cb3 3142616771cd 71401840ed86 670713507d03 8fb1abd4178a aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 525ed90e4577 564e40829f80 564e40829f80 fac1f62a1d71 fac1f62a1d71 71ffa932799d 8b06c420491d 670713507d03 670713507d03 e00dccb6f211 aec4c0071cb3 aec4c0071cb3 8fb1abd4178a aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 e96bc5a01490 e00dccb6f211 e96bc5a01490 e96bc5a01490 e96bc5a01490 e96bc5a01490 e96bc5a01490 e96bc5a01490 e96bc5a01490 e96bc5a01490 e96bc5a01490 e96bc5a01490 e96bc5a01490 e00dccb6f211 fac1f62a1d71 aec4c0071cb3 aec4c0071cb3 707dfdb1c7a8 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 aec4c0071cb3 707dfdb1c7a8 707dfdb1c7a8 707dfdb1c7a8 707dfdb1c7a8 2963f2894a7a 707dfdb1c7a8 2963f2894a7a aec4c0071cb3 f93b523c0be3 aec4c0071cb3 f93b523c0be3 71ffa932799d f93b523c0be3 f93b523c0be3 f93b523c0be3 aec4c0071cb3 aec4c0071cb3 f93b523c0be3 71ffa932799d 2963f2894a7a 2963f2894a7a | #!/usr/bin/python
# -*- coding: utf-8 -*-
from mako.template import Template
from mercurial.hg import repository
from mercurial.hgweb import hgweb
from mercurial.hgweb.request import wsgiapplication
from mercurial.localrepo import localrepository
from operator import itemgetter
from pylons import tmpl_context as c, app_globals as g, session, request, config
from pylons.controllers.util import abort
from pylons_app.lib import helpers as h
from pylons_app.lib.base import BaseController, render
from pylons_app.lib.utils import get_repo_slug
from pylons_app.model.hg_model import HgModel
import logging
import os
from beaker.cache import cache_region
log = logging.getLogger(__name__)
class HgController(BaseController):
def __before__(self):
c.repos_prefix = config['repos_name']
c.repo_name = get_repo_slug(request)
def index(self):
hg_model = HgModel()
@cache_region('short_term', 'repo_list')
def _list():
return list(hg_model.get_repos())
c.repos_list = _list()
c.current_sort = request.GET.get('sort', 'name')
cs = c.current_sort
c.cs_slug = cs.replace('-', '')
sortables = ['name', 'description', 'last_change', 'tip', 'contact']
if cs and c.cs_slug in sortables:
sort_key = c.cs_slug + '_sort'
if cs.startswith('-'):
c.repos_list.sort(key=itemgetter(sort_key), reverse=True)
else:
c.repos_list.sort(key=itemgetter(sort_key), reverse=False)
return render('/index.html')
def view(self, environ, start_response, path_info):
print path_info
def app_maker():
path = os.path.join(g.base_path, c.repo_name)
repo = repository(g.baseui, path)
hgwebapp = hgweb(repo, c.repo_name)
return hgwebapp
a = wsgiapplication(app_maker)
resp = a(environ, start_response)
http_accept = request.environ.get('HTTP_ACCEPT', False)
if not http_accept:
return abort(status_code=400, detail='no http accept in header')
#for mercurial protocols and raw files we can't wrap into mako
if http_accept.find("mercurial") != -1 or \
request.environ['PATH_INFO'].find('raw-file') != -1:
return resp
try:
tmpl = u''.join(resp)
template = Template(tmpl, lookup=request.environ['pylons.pylons']\
.config['pylons.app_globals'].mako_lookup)
except (RuntimeError, UnicodeDecodeError):
log.info('disabling unicode due to encoding error')
resp = g.hgapp(request.environ, self.start_response)
tmpl = ''.join(resp)
template = Template(tmpl, lookup=request.environ['pylons.pylons']\
.config['pylons.app_globals'].mako_lookup, disable_unicode=True)
return template.render(g=g, c=c, session=session, h=h)
|