when importing, tag cards as new, add unit test

This commit is contained in:
Damien Elmes 2009-02-14 03:03:42 +09:00
parent 724c1354a8
commit 77a6488f6d
4 changed files with 40 additions and 1 deletions

View file

@ -12,6 +12,8 @@ from anki import DeckStorage
from anki.importing import Importer
from anki.sync import SyncClient, SyncServer, BulkMediaSyncer
from anki.lang import _
from anki.utils import ids2str
import time
class Anki10Importer(Importer):
@ -59,6 +61,17 @@ class Anki10Importer(Importer):
self.deck.updateProgress()
fids = [f[0] for f in res['added-facts']['facts']]
self.deck.addTags(fids, self.tagsToAdd)
# mark import material as newly added
self.deck.s.statement(
"update cards set modified = :t where id in %s" %
ids2str([x[0] for x in res['added-cards']]), t=time.time())
self.deck.s.statement(
"update facts set modified = :t where id in %s" %
ids2str([x[0] for x in res['added-facts']['facts']]), t=time.time())
self.deck.s.statement(
"update models set modified = :t where id in %s" %
ids2str([x['id'] for x in res['added-models']]), t=time.time())
# update total and refresh
self.total = len(res['added-facts']['facts'])
src.s.rollback()
self.deck.flushMod()

View file

@ -544,7 +544,6 @@ values
"delete from cardsDeleted where cardId in %s" %
ids2str([c[0] for c in cards]))
def deleteCards(self, ids):
self.deck.deleteCards(ids)

Binary file not shown.

View file

@ -8,6 +8,7 @@ from anki import DeckStorage
from anki.importing import anki10, csv, mnemosyne10
from anki.stdmodels import BasicModel
from anki.facts import Fact
from anki.sync import SyncClient, SyncServer
from anki.db import *
@ -65,3 +66,29 @@ def test_anki10():
i.doImport()
assert i.total == 0
deck.s.rollback()
def test_anki10_modtime():
deck1 = DeckStorage.Deck()
deck2 = DeckStorage.Deck()
client = SyncClient(deck1)
server = SyncServer(deck2)
client.setServer(server)
deck1.addModel(BasicModel())
f = deck1.newFact()
f['Front'] = u"foo"; f['Back'] = u"bar"
deck1.addFact(f)
assert deck1.cardCount == 1
assert deck2.cardCount == 0
client.sync()
assert deck1.cardCount == 1
assert deck2.cardCount == 1
file_ = unicode(os.path.join(testDir, "importing/test10-3.anki"))
file = "/tmp/test10-3.anki"
shutil.copy(file_, file)
i = anki10.Anki10Importer(deck1, file)
i.doImport()
client.sync()
assert i.total == 1
assert deck2.s.scalar("select count(*) from cards") == 2
assert deck2.s.scalar("select count(*) from facts") == 2
assert deck2.s.scalar("select count(*) from models") == 2