Add last uploaded timestamp comparison for remote conflict detection

This commit is contained in:
David Stainton 2015-10-28 16:41:48 +01:00 committed by Brian Warner
parent 6402159106
commit edc671f577
2 changed files with 22 additions and 4 deletions

View File

@ -707,10 +707,12 @@ class Downloader(QueueMixin, WriteFileMixin):
if dmd_last_downloaded_uri != local_last_downloaded_uri:
is_conflict = True
self._count('objects_conflicted')
#dmd_last_uploaded_uri = metadata.get('last_uploaded_uri', None)
#local_last_uploaded_uri = ...
else:
dmd_last_uploaded_uri = metadata.get('last_uploaded_uri', None)
local_last_uploaded_uri = self._db.get_last_uploaded_uri(relpath_u)
if dmd_last_uploaded_uri != local_last_uploaded_uri:
is_conflict = True
self._count('objects_conflicted')
if relpath_u.endswith(u"/"):
if metadata.get('deleted', False):
self._log("rmdir(%r) ignored" % (abspath_u,))

View File

@ -91,6 +91,22 @@ class MagicFolderDB(object):
else:
return row[0]
def get_last_uploaded_uri(self, relpath_u):
"""
Return the last downloaded uri recorded in the magic folder db.
If none are found then return None.
"""
c = self.cursor
c.execute("SELECT last_uploaded_uri"
" FROM local_files"
" WHERE path=?",
(relpath_u,))
row = self.cursor.fetchone()
if not row:
return None
else:
return row[0]
def get_local_file_version(self, relpath_u):
"""
Return the version of a local file tracked by our magic folder db.