Files
@ 7f88d7088f9c
Branch filter:
Location: kallithea/pylons_app/controllers/hg.py - annotation
7f88d7088f9c
4.5 KiB
text/x-python
mercurial added limit for sending backup file
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | 564e40829f80 564e40829f80 564e40829f80 bbaab7501c1a 3142616771cd 3142616771cd 564e40829f80 564e40829f80 ad0dd3904225 ad0dd3904225 ad0dd3904225 2620dac853ad 2963f2894a7a 707dfdb1c7a8 525ed90e4577 564e40829f80 564e40829f80 fac1f62a1d71 fac1f62a1d71 fac1f62a1d71 fac1f62a1d71 3092016c6d0c fac1f62a1d71 707dfdb1c7a8 707dfdb1c7a8 707dfdb1c7a8 707dfdb1c7a8 707dfdb1c7a8 2963f2894a7a 707dfdb1c7a8 2963f2894a7a fac1f62a1d71 f93b523c0be3 f93b523c0be3 f93b523c0be3 f93b523c0be3 f93b523c0be3 f93b523c0be3 f93b523c0be3 f93b523c0be3 f93b523c0be3 f93b523c0be3 f93b523c0be3 2963f2894a7a fac1f62a1d71 2963f2894a7a 3092016c6d0c 3142616771cd 3142616771cd 3142616771cd 3142616771cd 2963f2894a7a 2963f2894a7a 2963f2894a7a 2963f2894a7a 3092016c6d0c bbaab7501c1a bbaab7501c1a 3092016c6d0c 3092016c6d0c bbaab7501c1a bbaab7501c1a bbaab7501c1a 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c bbaab7501c1a bbaab7501c1a 3092016c6d0c bbaab7501c1a bbaab7501c1a 3092016c6d0c bbaab7501c1a 564e40829f80 ad0dd3904225 5f30a6d558dc 5f30a6d558dc 2620dac853ad 2620dac853ad 2620dac853ad 2620dac853ad 2620dac853ad 2620dac853ad 2620dac853ad 2620dac853ad 2620dac853ad ad0dd3904225 564e40829f80 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 2620dac853ad ad0dd3904225 ad0dd3904225 ad0dd3904225 ad0dd3904225 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c ad0dd3904225 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c 3092016c6d0c | #!/usr/bin/python
# -*- coding: utf-8 -*-
import logging
from pylons_app.lib.base import BaseController, render
from pylons import c, g, session, request
from pylons_app.lib import helpers as h
from mako.template import Template
from pprint import pprint
import os
from mercurial import ui, hg
from mercurial.error import RepoError
from ConfigParser import ConfigParser
import encodings
from pylons.controllers.util import abort
log = logging.getLogger(__name__)
class HgController(BaseController):
def __before__(self):
c.repos_prefix = 'etelko'
def view(self, *args, **kwargs):
response = g.hgapp(request.environ, self.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 response
try:
tmpl = u''.join(response)
template = Template(tmpl, lookup=request.environ['pylons.pylons']\
.config['pylons.g'].mako_lookup)
except (RuntimeError, UnicodeDecodeError):
log.info('disabling unicode due to encoding error')
response = g.hgapp(request.environ, self.start_response)
tmpl = ''.join(response)
template = Template(tmpl, lookup=request.environ['pylons.pylons']\
.config['pylons.g'].mako_lookup, disable_unicode=True)
return template.render(g=g, c=c, session=session, h=h)
def manage_hgrc(self):
pass
def hgrc(self, dirname):
filename = os.path.join(dirname, '.hg', 'hgrc')
return filename
def add_repo(self, new_repo):
c.staticurl = g.statics
#extra check it can be add since it's the command
if new_repo == 'add':
c.msg = 'you basstard ! this repo is a command'
c.new_repo = ''
return render('add.html')
new_repo = new_repo.replace(" ", "_")
new_repo = new_repo.replace("-", "_")
try:
self._create_repo(new_repo)
c.new_repo = new_repo
c.msg = 'added repo'
except Exception as e:
c.new_repo = 'Exception when adding: %s' % new_repo
c.msg = str(e)
return render('add.html')
def _check_repo(self, repo_name):
p = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
config_path = os.path.join(p, 'hgwebdir.config')
cp = ConfigParser()
cp.read(config_path)
repos_path = cp.get('paths', '/').replace("**", '')
if not repos_path:
raise Exception('Could not read config !')
self.repo_path = os.path.join(repos_path, repo_name)
try:
r = hg.repository(ui.ui(), self.repo_path)
hg.verify(r)
#here we hnow that repo exists it was verified
log.info('%s repo is already created', repo_name)
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
def _create_repo(self, repo_name):
if repo_name in [None, '', 'add']:
raise Exception('undefined repo_name of repo')
if self._check_repo(repo_name):
log.info('creating repo %s in %s', repo_name, self.repo_path)
cmd = """mkdir %s && hg init %s""" \
% (self.repo_path, self.repo_path)
os.popen(cmd)
#def _make_app():
# #for single a repo
# #return hgweb("/path/to/repo", "Name")
# repos = "hgwebdir.config"
# return hgwebdir(repos)
#
# def view(self, environ, start_response):
# #the following is only needed when using hgwebdir
# app = _make_app()
# #return wsgi_app(environ, start_response)
# response = app(request.environ, self.start_response)
#
# if environ['PATH_INFO'].find("static") != -1:
# return response
# else:
# #wrap the murcurial response in a mako template.
# template = Template("".join(response),
# lookup = environ['pylons.pylons']\
# .config['pylons.g'].mako_lookup)
#
# return template.render(g = g, c = c, session = session, h = h)
|