Mercurial > piecrust2
changeset 598:3cec8634209a
admin: Ability to configure SCM stuff per site.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Fri, 22 Jan 2016 11:01:00 -0800 |
parents | 79a31a3c947b |
children | d7baac1d01e6 |
files | foodtruck/scm/base.py foodtruck/scm/mercurial.py foodtruck/sites.py foodtruck/views/edit.py |
diffstat | 4 files changed, 28 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/foodtruck/scm/base.py Wed Jan 20 21:39:18 2016 -0800 +++ b/foodtruck/scm/base.py Fri Jan 22 11:01:00 2016 -0800 @@ -7,12 +7,17 @@ class SourceControl(object): - def __init__(self, root_dir): + def __init__(self, root_dir, cfg): self.root_dir = root_dir + self.config = cfg def getStatus(self): raise NotImplementedError() - def commit(self, paths, author, message): + def commit(self, paths, message, *, author=None): + author = author or self.config.get('author') + self._doCommit(paths, message, author) + + def _doCommit(self, paths, message, author): raise NotImplementedError()
--- a/foodtruck/scm/mercurial.py Wed Jan 20 21:39:18 2016 -0800 +++ b/foodtruck/scm/mercurial.py Fri Jan 22 11:01:00 2016 -0800 @@ -33,7 +33,7 @@ res.edited_files.append(line[2:]) return res - def commit(self, paths, author, message): + def _doCommit(self, paths, message, author): if not message: raise ValueError("No commit message specified.")
--- a/foodtruck/sites.py Wed Jan 20 21:39:18 2016 -0800 +++ b/foodtruck/sites.py Fri Jan 22 11:01:00 2016 -0800 @@ -1,5 +1,6 @@ import os import os.path +import copy import shlex import logging import threading @@ -35,12 +36,27 @@ @property def scm(self): if self._scm is None: - scm_type = self.config.get('scm/type') - if scm_type == 'hg': + cfg = None + scm_cfg = self.config.get('sites/%s/scm' % self.name) + global_scm_cfg = self.config.get('scm') + if scm_cfg: + if global_scm_cfg: + cfg = copy.deepcopy(global_scm_cfg) + merge_dicts(cfg, scm_cfg) + else: + cfg = copy.deepcopy(scm_cfg) + elif global_scm_cfg: + cfg = copy.deepcopy(global_scm_cfg) + + if not cfg or not 'type' in cfg: + raise Exception("No SCM available for site: %s" % self.name) + + if cfg['type'] == 'hg': from .scm.mercurial import MercurialSourceControl - self._scm = MercurialSourceControl(self.root_dir) + self._scm = MercurialSourceControl(self.root_dir, cfg) else: raise NotImplementedError() + return self._scm @property
--- a/foodtruck/views/edit.py Wed Jan 20 21:39:18 2016 -0800 +++ b/foodtruck/views/edit.py Fri Jan 22 11:01:00 2016 -0800 @@ -39,10 +39,9 @@ page.path, site_app.root_dir)) if 'do_save_and_commit' in request.form: - author = g.config.get('scm/username') message = "Edit %s" % os.path.relpath( page.path, site_app.root_dir) - site.scm.commit([page.path], author, message) + site.scm.commit([page.path], message) if 'do_preview' in request.form: return _preview_page(page)