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.importing import Importer
from anki.sync import SyncClient, SyncServer, BulkMediaSyncer from anki.sync import SyncClient, SyncServer, BulkMediaSyncer
from anki.lang import _ from anki.lang import _
from anki.utils import ids2str
import time
class Anki10Importer(Importer): class Anki10Importer(Importer):
@ -59,6 +61,17 @@ class Anki10Importer(Importer):
self.deck.updateProgress() 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)
# 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']) self.total = len(res['added-facts']['facts'])
src.s.rollback() src.s.rollback()
self.deck.flushMod() self.deck.flushMod()

View file

@ -544,7 +544,6 @@ values
"delete from cardsDeleted where cardId in %s" % "delete from cardsDeleted where cardId in %s" %
ids2str([c[0] for c in cards])) ids2str([c[0] for c in cards]))
def deleteCards(self, ids): def deleteCards(self, ids):
self.deck.deleteCards(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.importing import anki10, csv, mnemosyne10
from anki.stdmodels import BasicModel from anki.stdmodels import BasicModel
from anki.facts import Fact from anki.facts import Fact
from anki.sync import SyncClient, SyncServer
from anki.db import * from anki.db import *
@ -65,3 +66,29 @@ def test_anki10():
i.doImport() i.doImport()
assert i.total == 0 assert i.total == 0
deck.s.rollback() 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