mirror of
https://github.com/ankitects/anki.git
synced 2025-09-20 15:02:21 -04:00
more general solution to sync failures
This commit is contained in:
parent
90fed6bd45
commit
f8d13106fb
1 changed files with 15 additions and 12 deletions
|
@ -109,7 +109,12 @@ sync was aborted. Please report this error.""")
|
||||||
def syncAllDecks(self):
|
def syncAllDecks(self):
|
||||||
decks = self.parent.syncDecks
|
decks = self.parent.syncDecks
|
||||||
for d in decks:
|
for d in decks:
|
||||||
if not self.syncDeck(deck=d):
|
ret = self.syncDeck(deck=d)
|
||||||
|
if not ret:
|
||||||
|
# failed but not cleaned up
|
||||||
|
break
|
||||||
|
elif ret == -1:
|
||||||
|
# failed and already cleaned up
|
||||||
return
|
return
|
||||||
self.setStatus(_("Sync Finished."), 0)
|
self.setStatus(_("Sync Finished."), 0)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
@ -141,16 +146,14 @@ sync was aborted. Please report this error.""")
|
||||||
if "locked" in unicode(e):
|
if "locked" in unicode(e):
|
||||||
return
|
return
|
||||||
# unknown error
|
# unknown error
|
||||||
raise
|
self.error(e)
|
||||||
|
return -1
|
||||||
# ensure deck mods cached
|
# ensure deck mods cached
|
||||||
try:
|
try:
|
||||||
proxy = self.connect()
|
proxy = self.connect()
|
||||||
except SyncError, e:
|
except SyncError, e:
|
||||||
self.error(e)
|
self.error(e)
|
||||||
if deck:
|
return -1
|
||||||
raise
|
|
||||||
else:
|
|
||||||
return
|
|
||||||
# exists on server?
|
# exists on server?
|
||||||
deckCreated = False
|
deckCreated = False
|
||||||
if not proxy.hasDeck(syncName):
|
if not proxy.hasDeck(syncName):
|
||||||
|
@ -164,7 +167,7 @@ sync was aborted. Please report this error.""")
|
||||||
deckCreated = True
|
deckCreated = True
|
||||||
except SyncError, e:
|
except SyncError, e:
|
||||||
self.error(e)
|
self.error(e)
|
||||||
return
|
return -1
|
||||||
# check conflicts
|
# check conflicts
|
||||||
proxy.deckName = syncName
|
proxy.deckName = syncName
|
||||||
remoteMod = proxy.modified()
|
remoteMod = proxy.modified()
|
||||||
|
@ -177,10 +180,9 @@ sync was aborted. Please report this error.""")
|
||||||
while not self.conflictResolution:
|
while not self.conflictResolution:
|
||||||
time.sleep(0.2)
|
time.sleep(0.2)
|
||||||
if self.conflictResolution == "cancel":
|
if self.conflictResolution == "cancel":
|
||||||
if not deck:
|
|
||||||
# alert we're finished early
|
# alert we're finished early
|
||||||
self.emit(SIGNAL("syncFinished"))
|
self.emit(SIGNAL("syncFinished"))
|
||||||
return
|
return -1
|
||||||
# reopen
|
# reopen
|
||||||
self.setStatus(_("Syncing <b>%s</b>...") % syncName, 0)
|
self.setStatus(_("Syncing <b>%s</b>...") % syncName, 0)
|
||||||
self.deck = None
|
self.deck = None
|
||||||
|
@ -223,7 +225,7 @@ sync was aborted. Please report this error.""")
|
||||||
if not deck:
|
if not deck:
|
||||||
# alert we're finished early
|
# alert we're finished early
|
||||||
self.emit(SIGNAL("syncFinished"))
|
self.emit(SIGNAL("syncFinished"))
|
||||||
return
|
return True
|
||||||
self.setStatus(_("Uploading..."), 0)
|
self.setStatus(_("Uploading..."), 0)
|
||||||
client.fullSyncFromLocal(ret[1], ret[2])
|
client.fullSyncFromLocal(ret[1], ret[2])
|
||||||
else:
|
else:
|
||||||
|
@ -273,6 +275,7 @@ sync was aborted. Please report this error.""")
|
||||||
self.setStatus(_("Syncing failed: %(a)s") % {
|
self.setStatus(_("Syncing failed: %(a)s") % {
|
||||||
'a': err})
|
'a': err})
|
||||||
self.error(e)
|
self.error(e)
|
||||||
|
return -1
|
||||||
|
|
||||||
# Downloading personal decks
|
# Downloading personal decks
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
Loading…
Reference in a new issue