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.")
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):
+ commit_info):
lock = self._library.lock()
try:
self._library._checkout(self._revision.hgrev())
return self.id + '.' + entry
ops(self._library, entry_path)
- message, user = before_commit(self)
+ message, user = commit_info(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()
# self.invoke_and_commit(message, user, lambda *a: True)
def ismain(self):
- return self._revision.user_name() is None
+ return self._revision.user_name is None
def shared(self):
if self.ismain():
if self.ismain():
return (True, False) # always shared
- user = self._revision.user_name()
+ user = self._revision.user_name
main = self.shared()._revision
local = self._revision