X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/085dd288093e1fd5455cc4db9f82998f05656a14..f46d9319a26b5cf74fcf5aa24a5a8df18f1bda74:/lib/wlrepo/mercurial_backend/document.py?ds=inline diff --git a/lib/wlrepo/mercurial_backend/document.py b/lib/wlrepo/mercurial_backend/document.py index c7f2f9f7..523e330a 100644 --- a/lib/wlrepo/mercurial_backend/document.py +++ b/lib/wlrepo/mercurial_backend/document.py @@ -15,6 +15,14 @@ class MercurialDocument(wlrepo.Document): def quickwrite(self, entry, data, msg, user=None): user = user or self.owner + + if isinstance(data, unicode): + data = data.encode('utf-8') + + user = self._library._sanitize_string(user) + msg = self._library._sanitize_string(msg) + entry = self._library._sanitize_string(entry) + if user is None: raise ValueError("Can't determine user.") @@ -24,7 +32,7 @@ class MercurialDocument(wlrepo.Document): f.close() l._fileadd(r(entry)) - return self.invoke_and_commit(write, lambda d: (msg, user)) + return self.invoke_and_commit(write, lambda d: (msg, self.owner)) def invoke_and_commit(self, ops, before_commit, rollback=False): @@ -38,7 +46,12 @@ class MercurialDocument(wlrepo.Document): ops(self._library, entry_path) message, user = before_commit(self) self._library._commit(message, user) - return self._library.document(docid=self.id, user=self.owner) + try: + return self._library.document(docid=self.id, user=user) + except Exception, e: + # rollback the last commit + self._library._rollback() + raise e finally: lock.release()