diff --git a/pylons_app/controllers/hg.py b/pylons_app/controllers/hg.py --- a/pylons_app/controllers/hg.py +++ b/pylons_app/controllers/hg.py @@ -5,12 +5,16 @@ from pylons_app.lib.base import BaseCont from pylons import c, g, session, h, request from mako.template import Template from pprint import pprint +import os #uncomment the following if you want to serve a single repo #from mercurial.hgweb.hgweb_mod import hgweb from mercurial.hgweb.hgwebdir_mod import hgwebdir from mercurial.hgweb.request import wsgiapplication log = logging.getLogger(__name__) +from mercurial import ui, hg +from mercurial.error import RepoError + #http://bel-epa.com/hg/ #def make_web_app(): # repos = "hgwebdir.config" @@ -41,7 +45,55 @@ def wsgi_app(environ, start_response): class HgController(BaseController): + def _check_repo(self, repo_name): + repos_path = '/home/marcink/python_workspace' + 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', repo_name) + cmd = """mkdir %s && hg init %s""" \ + % (self.repo_path, self.repo_path) + os.popen(cmd) + + + def add_repo(self, new_repo): + tmpl = ''' + +
+ %(msg)s%(new_repo)s!