progress for importing

This commit is contained in:
Damien Elmes 2009-01-16 20:22:46 +09:00
parent 6015dbec04
commit 1fa7466dd9
2 changed files with 16 additions and 0 deletions

View file

@ -46,8 +46,13 @@ class Importer(object):
def doImport(self): def doImport(self):
"Import." "Import."
self.deck.startProgress(_("Import"), 0, 6)
self.deck.updateProgress(_("Reading source..."))
c = self.foreignCards() c = self.foreignCards()
self.importCards(c) self.importCards(c)
self.deck.updateProgress(_("Updating priorities..."))
self.deck.updateAllPriorities()
self.deck.finishProgress()
if c: if c:
self.deck.setModified() self.deck.setModified()
@ -118,6 +123,7 @@ all but one card template."""))
def addCards(self, cards): def addCards(self, cards):
"Add facts in bulk from foreign cards." "Add facts in bulk from foreign cards."
# add facts # add facts
self.deck.updateProgress(_("Adding facts..."))
factIds = [genID() for n in range(len(cards))] factIds = [genID() for n in range(len(cards))]
self.deck.s.execute(factsTable.insert(), self.deck.s.execute(factsTable.insert(),
[{'modelId': self.model.id, [{'modelId': self.model.id,
@ -128,6 +134,7 @@ all but one card template."""))
delete from factsDeleted delete from factsDeleted
where factId in (%s)""" % ",".join([str(s) for s in factIds])) where factId in (%s)""" % ",".join([str(s) for s in factIds]))
# add all the fields # add all the fields
self.deck.updateProgress(_("Adding fields..."))
for fm in self.model.fieldModels: for fm in self.model.fieldModels:
try: try:
index = self.mapping.index(fm) index = self.mapping.index(fm)
@ -143,6 +150,7 @@ where factId in (%s)""" % ",".join([str(s) for s in factIds]))
self.deck.s.execute(fieldsTable.insert(), self.deck.s.execute(fieldsTable.insert(),
data) data)
# and cards # and cards
self.deck.updateProgress(_("Adding cards..."))
now = time.time() now = time.time()
for cm in self.model.cardModels: for cm in self.model.cardModels:
self._now = now self._now = now
@ -157,6 +165,7 @@ where factId in (%s)""" % ",".join([str(s) for s in factIds]))
'type': 2},cards[m]) for m in range(len(cards))] 'type': 2},cards[m]) for m in range(len(cards))]
self.deck.s.execute(cardsTable.insert(), self.deck.s.execute(cardsTable.insert(),
data) data)
self.deck.updateProgress(_("Caching QA..."))
self.deck.updateCardsFromModel(self.model) self.deck.updateCardsFromModel(self.model)
self.deck.cardCount += len(cards) self.deck.cardCount += len(cards)
self.total = len(factIds) self.total = len(factIds)
@ -171,6 +180,7 @@ where factId in (%s)""" % ",".join([str(s) for s in factIds]))
self._now += .00001 self._now += .00001
data.update(card.__dict__) data.update(card.__dict__)
data['combinedDue'] = data['due'] data['combinedDue'] = data['due']
data['isDue'] = data['combinedDue'] < time.time()
return data return data
def stripInvalid(self, cards): def stripInvalid(self, cards):

View file

@ -18,6 +18,8 @@ class Anki10Importer(Importer):
def doImport(self): def doImport(self):
"Import." "Import."
self.deck.startProgress(_("Import"), 0, 4)
self.deck.updateProgress(_("Importing..."))
src = DeckStorage.Deck(self.file) src = DeckStorage.Deck(self.file)
client = SyncClient(self.deck) client = SyncClient(self.deck)
server = SyncServer(src) server = SyncServer(src)
@ -43,7 +45,9 @@ class Anki10Importer(Importer):
assert payload['deleted-facts'] == [] assert payload['deleted-facts'] == []
assert payload['deleted-cards'] == [] assert payload['deleted-cards'] == []
assert payload['deleted-models'] == [] assert payload['deleted-models'] == []
self.deck.updateProgress()
res = server.applyPayload(payload) res = server.applyPayload(payload)
self.deck.updateProgress()
client.applyPayloadReply(res) client.applyPayloadReply(res)
if client.mediaSyncPending: if client.mediaSyncPending:
bulkClient = BulkMediaSyncer(client.deck) bulkClient = BulkMediaSyncer(client.deck)
@ -51,11 +55,13 @@ class Anki10Importer(Importer):
bulkClient.server = bulkServer bulkClient.server = bulkServer
bulkClient.sync() bulkClient.sync()
# add tags # add tags
self.deck.updateProgress()
fids = [f[0] for f in res['added-facts']['facts']] fids = [f[0] for f in res['added-facts']['facts']]
self.deck.addTags(fids, self.tagsToAdd) self.deck.addTags(fids, self.tagsToAdd)
self.total = len(res['added-facts']['facts']) self.total = len(res['added-facts']['facts'])
src.s.rollback() src.s.rollback()
self.deck.flushMod() self.deck.flushMod()
self.deck.finishProgress()
def _clearDeleted(self, sum): def _clearDeleted(self, sum):
sum['delcards'] = [] sum['delcards'] = []