mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 14:32:22 -04:00
sync sources, support media syncing in import/export again
This commit is contained in:
parent
2afa59b24a
commit
c0e5bed6a6
4 changed files with 39 additions and 3 deletions
|
@ -1462,7 +1462,7 @@ sourcesTable = Table(
|
|||
Column('lastSync', Float, nullable=False, default=0),
|
||||
# -1 = never check, 0 = always check, 1+ = number of seconds passed.
|
||||
# not currently exposed in the GUI
|
||||
Column('syncPeriod', Float, nullable=False, default=0))
|
||||
Column('syncPeriod', Integer, nullable=False, default=0))
|
||||
|
||||
# Maps
|
||||
##########################################################################
|
||||
|
|
|
@ -12,7 +12,7 @@ import itertools, time
|
|||
from operator import itemgetter
|
||||
from anki import DeckStorage
|
||||
from anki.cards import Card
|
||||
from anki.sync import SyncClient, SyncServer
|
||||
from anki.sync import SyncClient, SyncServer, BulkMediaSyncer
|
||||
from anki.lang import _
|
||||
from anki.utils import findTag, parseTags, stripHTML, ids2str
|
||||
from anki.db import *
|
||||
|
@ -104,6 +104,12 @@ type = 2,
|
|||
combinedDue = created,
|
||||
modified = :now
|
||||
""", now=time.time())
|
||||
# media
|
||||
if client.mediaSyncPending:
|
||||
bulkClient = BulkMediaSyncer(client.deck)
|
||||
bulkServer = BulkMediaSyncer(server.deck)
|
||||
bulkClient.server = bulkServer
|
||||
bulkClient.sync()
|
||||
# need to save manually
|
||||
self.newDeck.s.commit()
|
||||
self.newDeck.close()
|
||||
|
|
|
@ -10,7 +10,7 @@ __docformat__ = 'restructuredtext'
|
|||
|
||||
from anki import DeckStorage
|
||||
from anki.importing import Importer
|
||||
from anki.sync import SyncClient, SyncServer
|
||||
from anki.sync import SyncClient, SyncServer, BulkMediaSyncer
|
||||
|
||||
class Anki10Importer(Importer):
|
||||
|
||||
|
@ -45,6 +45,11 @@ class Anki10Importer(Importer):
|
|||
assert payload['deleted-models'] == []
|
||||
res = server.applyPayload(payload)
|
||||
client.applyPayloadReply(res)
|
||||
if client.mediaSyncPending:
|
||||
bulkClient = BulkMediaSyncer(client.deck)
|
||||
bulkServer = BulkMediaSyncer(server.deck)
|
||||
bulkClient.server = bulkServer
|
||||
bulkClient.sync()
|
||||
# add tags
|
||||
fids = [f[0] for f in res['added-facts']['facts']]
|
||||
self.deck.addFactTags(fids, self.tagsToAdd)
|
||||
|
|
25
anki/sync.py
25
anki/sync.py
|
@ -63,6 +63,11 @@ class SyncTools(object):
|
|||
payload = self.genPayload(sums)
|
||||
res = self.server.applyPayload(payload)
|
||||
self.applyPayloadReply(res)
|
||||
if self.mediaSyncPending:
|
||||
bulkClient = BulkMediaSyncer(self.deck)
|
||||
bulkServer = BulkMediaSyncer(self.server.deck)
|
||||
bulkClient.server = bulkServer
|
||||
bulkClient.sync()
|
||||
|
||||
def prepareSync(self):
|
||||
"Sync setup. True if sync needed."
|
||||
|
@ -97,6 +102,7 @@ class SyncTools(object):
|
|||
payload['deck'] = self.bundleDeck()
|
||||
payload['stats'] = self.bundleStats()
|
||||
payload['history'] = self.bundleHistory()
|
||||
payload['sources'] = self.bundleSources()
|
||||
self.deck.lastSync = self.deck.modified
|
||||
return payload
|
||||
|
||||
|
@ -115,11 +121,14 @@ class SyncTools(object):
|
|||
reply['deck'] = self.bundleDeck()
|
||||
reply['stats'] = self.bundleStats()
|
||||
reply['history'] = self.bundleHistory()
|
||||
reply['sources'] = self.bundleSources()
|
||||
self.deck.lastSync = self.deck.modified
|
||||
else:
|
||||
self.updateDeck(payload['deck'])
|
||||
self.updateStats(payload['stats'])
|
||||
self.updateHistory(payload['history'])
|
||||
if 'sources' in payload:
|
||||
self.updateSources(payload['sources'])
|
||||
self.postSyncRefresh()
|
||||
# rebuild priorities on server
|
||||
cardIds = [x[0] for x in payload['added-cards']]
|
||||
|
@ -135,6 +144,8 @@ class SyncTools(object):
|
|||
self.updateDeck(reply['deck'])
|
||||
self.updateStats(reply['stats'])
|
||||
self.updateHistory(reply['history'])
|
||||
if 'sources' in reply:
|
||||
self.updateSources(reply['sources'])
|
||||
self.postSyncRefresh()
|
||||
# rebuild priorities on client
|
||||
cardIds = [x[0] for x in reply['added-cards']]
|
||||
|
@ -594,6 +605,20 @@ values
|
|||
self.applyDict(ent, h)
|
||||
self.deck.s.save(ent)
|
||||
|
||||
def bundleSources(self):
|
||||
return self.realTuples(self.deck.s.all("select * from sources"))
|
||||
|
||||
def updateSources(self, sources):
|
||||
for s in sources:
|
||||
self.deck.s.statement("""
|
||||
insert or replace into sources values
|
||||
(:id, :name, :created, :lastSync, :syncPeriod)""",
|
||||
id=s[0],
|
||||
name=s[1],
|
||||
created=s[2],
|
||||
lastSync=s[3],
|
||||
syncPeriod=s[4])
|
||||
|
||||
# Media
|
||||
##########################################################################
|
||||
|
||||
|
|
Loading…
Reference in a new issue