Files
@ 2e1247e62c5b
Branch filter:
Location: kallithea/pylons_app/controllers/admin.py - annotation
2e1247e62c5b
2.5 KiB
text/x-python
changed for pylons 0.1 / 1.0
added admin controller
added admin controller
2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b 2e1247e62c5b | import logging
from pylons import request, response, session, tmpl_context as c, url, app_globals as g
from pylons.controllers.util import abort, redirect
from pylons_app.lib.base import BaseController, render
import os
from mercurial import ui, hg
from mercurial.error import RepoError
from ConfigParser import ConfigParser
log = logging.getLogger(__name__)
class AdminController(BaseController):
def __before__(self):
c.staticurl = g.statics
def index(self):
# Return a rendered template
return render('/admin.html')
def manage_hgrc(self):
pass
def hgrc(self, dirname):
filename = os.path.join(dirname, '.hg', 'hgrc')
return filename
def add_repo(self, new_repo):
#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)
|