change deck loading call

This commit is contained in:
Damien Elmes 2011-02-25 12:29:02 +09:00
parent 8a60ee0794
commit 8cbd3c9f3b
7 changed files with 34 additions and 53 deletions

View file

@ -8,7 +8,7 @@ Anki (libanki)
Open a deck: Open a deck:
deck = anki.DeckStorage.Deck(path) deck = anki.Deck(path)
Get a card: Get a card:
@ -55,3 +55,6 @@ except ImportError:
version = "1.2.8" version = "1.2.8"
from anki.deck import DeckStorage from anki.deck import DeckStorage
def Deck(*args, **kwargs):
return DeckStorage.Deck(*args, **kwargs)

View file

@ -2,7 +2,7 @@
import nose, os, tempfile import nose, os, tempfile
import anki import anki
from anki import DeckStorage from anki import Deck
from anki.exporting import * from anki.exporting import *
from anki.stdmodels import * from anki.stdmodels import *
@ -12,7 +12,7 @@ testDir = os.path.dirname(__file__)
def setup1(): def setup1():
global deck global deck
deck = DeckStorage.Deck() deck = Deck()
deck.addModel(BasicModel()) deck.addModel(BasicModel())
deck.currentModel.cardModels[1].active = True deck.currentModel.cardModels[1].active = True
f = deck.newFact() f = deck.newFact()
@ -33,14 +33,14 @@ def test_export_anki():
e.exportInto(newname) e.exportInto(newname)
assert deck.modified == oldTime assert deck.modified == oldTime
# connect to new deck # connect to new deck
d2 = DeckStorage.Deck(newname, backup=False) d2 = Deck(newname, backup=False)
assert d2.cardCount == 4 assert d2.cardCount == 4
# try again, limited to a tag # try again, limited to a tag
newname = unicode(tempfile.mkstemp(prefix="ankitest")[1]) newname = unicode(tempfile.mkstemp(prefix="ankitest")[1])
os.unlink(newname) os.unlink(newname)
e.limitTags = ['tag'] e.limitTags = ['tag']
e.exportInto(newname) e.exportInto(newname)
d2 = DeckStorage.Deck(newname, backup=False) d2 = Deck(newname, backup=False)
assert d2.cardCount == 2 assert d2.cardCount == 2
@nose.with_setup(setup1) @nose.with_setup(setup1)

View file

@ -4,7 +4,7 @@ import nose, os, shutil
from tests.shared import assertException from tests.shared import assertException
from anki.errors import * from anki.errors import *
from anki import DeckStorage from anki import Deck
from anki.importing import anki10, csvfile, mnemosyne10, supermemo_xml, dingsbums from anki.importing import anki10, csvfile, mnemosyne10, supermemo_xml, dingsbums
from anki.stdmodels import BasicModel from anki.stdmodels import BasicModel
from anki.facts import Fact from anki.facts import Fact
@ -15,7 +15,7 @@ from anki.db import *
testDir = os.path.dirname(__file__) testDir = os.path.dirname(__file__)
def test_csv(): def test_csv():
deck = DeckStorage.Deck() deck = Deck()
deck.addModel(BasicModel()) deck.addModel(BasicModel())
file = unicode(os.path.join(testDir, "importing/text-2fields.txt")) file = unicode(os.path.join(testDir, "importing/text-2fields.txt"))
i = csvfile.TextImporter(deck, file) i = csvfile.TextImporter(deck, file)
@ -26,7 +26,7 @@ def test_csv():
deck.close() deck.close()
def test_csv_tags(): def test_csv_tags():
deck = DeckStorage.Deck() deck = Deck()
deck.addModel(BasicModel()) deck.addModel(BasicModel())
file = unicode(os.path.join(testDir, "importing/text-tags.txt")) file = unicode(os.path.join(testDir, "importing/text-tags.txt"))
i = csvfile.TextImporter(deck, file) i = csvfile.TextImporter(deck, file)
@ -37,7 +37,7 @@ def test_csv_tags():
deck.close() deck.close()
def test_mnemosyne10(): def test_mnemosyne10():
deck = DeckStorage.Deck() deck = Deck()
deck.addModel(BasicModel()) deck.addModel(BasicModel())
file = unicode(os.path.join(testDir, "importing/test.mem")) file = unicode(os.path.join(testDir, "importing/test.mem"))
i = mnemosyne10.Mnemosyne10Importer(deck, file) i = mnemosyne10.Mnemosyne10Importer(deck, file)
@ -46,7 +46,7 @@ def test_mnemosyne10():
deck.close() deck.close()
def test_supermemo_xml_01_unicode(): def test_supermemo_xml_01_unicode():
deck = DeckStorage.Deck() deck = Deck()
deck.addModel(BasicModel()) deck.addModel(BasicModel())
file = unicode(os.path.join(testDir, "importing/supermemo1.xml")) file = unicode(os.path.join(testDir, "importing/supermemo1.xml"))
i = supermemo_xml.SupermemoXmlImporter(deck, file) i = supermemo_xml.SupermemoXmlImporter(deck, file)
@ -65,7 +65,7 @@ def test_anki10():
file2_ = unicode(os.path.join(testDir, "importing/test10-2.anki")) file2_ = unicode(os.path.join(testDir, "importing/test10-2.anki"))
file2 = "/tmp/test10-2.anki" file2 = "/tmp/test10-2.anki"
shutil.copy(file2_, file2) shutil.copy(file2_, file2)
deck = DeckStorage.Deck() deck = Deck()
i = anki10.Anki10Importer(deck, file) i = anki10.Anki10Importer(deck, file)
i.doImport() i.doImport()
assert i.total == 2 assert i.total == 2
@ -73,15 +73,15 @@ def test_anki10():
deck.close() deck.close()
# import a deck into itself - 10-2 is the same as test10, but with one # import a deck into itself - 10-2 is the same as test10, but with one
# card answered and another deleted. nothing should be synced to client # card answered and another deleted. nothing should be synced to client
deck = DeckStorage.Deck(file, backup=False) deck = Deck(file, backup=False)
i = anki10.Anki10Importer(deck, file2) i = anki10.Anki10Importer(deck, file2)
i.doImport() i.doImport()
assert i.total == 0 assert i.total == 0
deck.db.rollback() deck.db.rollback()
def test_anki10_modtime(): def test_anki10_modtime():
deck1 = DeckStorage.Deck() deck1 = Deck()
deck2 = DeckStorage.Deck() deck2 = Deck()
client = SyncClient(deck1) client = SyncClient(deck1)
server = SyncServer(deck2) server = SyncServer(deck2)
client.setServer(server) client.setServer(server)
@ -106,7 +106,7 @@ def test_anki10_modtime():
assert deck2.db.scalar("select count(*) from models") == 2 assert deck2.db.scalar("select count(*) from models") == 2
def test_dingsbums(): def test_dingsbums():
deck = DeckStorage.Deck() deck = Deck()
deck.addModel(BasicModel()) deck.addModel(BasicModel())
startNumberOfFacts = deck.factCount startNumberOfFacts = deck.factCount
file = unicode(os.path.join(testDir, "importing/dingsbums.xml")) file = unicode(os.path.join(testDir, "importing/dingsbums.xml"))
@ -117,7 +117,7 @@ def test_dingsbums():
def test_updating(): def test_updating():
# get the standard csv deck first # get the standard csv deck first
deck = DeckStorage.Deck() deck = Deck()
deck.addModel(BasicModel()) deck.addModel(BasicModel())
file = unicode(os.path.join(testDir, "importing/text-2fields.txt")) file = unicode(os.path.join(testDir, "importing/text-2fields.txt"))
i = csvfile.TextImporter(deck, file) i = csvfile.TextImporter(deck, file)

View file

@ -4,7 +4,7 @@ import nose, os, tempfile, shutil, time
from tests.shared import assertException from tests.shared import assertException
from anki.errors import * from anki.errors import *
from anki import DeckStorage from anki import Deck
from anki.db import * from anki.db import *
from anki.stdmodels import BasicModel from anki.stdmodels import BasicModel
from anki.sync import SyncClient, SyncServer, HttpSyncServer, HttpSyncServerProxy from anki.sync import SyncClient, SyncServer, HttpSyncServer, HttpSyncServerProxy
@ -27,17 +27,17 @@ server=None
def setup_local(loadDecks=None): def setup_local(loadDecks=None):
global deck1, deck2, client, server global deck1, deck2, client, server
if loadDecks: if loadDecks:
deck1 = DeckStorage.Deck(loadDecks[0], backup=False) deck1 = Deck(loadDecks[0], backup=False)
deck2 = DeckStorage.Deck(loadDecks[1], backup=False) deck2 = Deck(loadDecks[1], backup=False)
else: else:
deck1 = DeckStorage.Deck() deck1 = Deck()
deck1.addModel(BasicModel()) deck1.addModel(BasicModel())
deck1.currentModel.cardModels[1].active = True deck1.currentModel.cardModels[1].active = True
deck1.newCardOrder = 1 deck1.newCardOrder = 1
f = deck1.newFact() f = deck1.newFact()
f['Front'] = u"foo"; f['Back'] = u"bar"; f.tags = u"foo" f['Front'] = u"foo"; f['Back'] = u"bar"; f.tags = u"foo"
deck1.addFact(f) deck1.addFact(f)
deck2 = DeckStorage.Deck() deck2 = Deck()
deck2.addModel(BasicModel()) deck2.addModel(BasicModel())
deck2.currentModel.cardModels[1].active = True deck2.currentModel.cardModels[1].active = True
f = deck2.newFact() f = deck2.newFact()
@ -181,7 +181,7 @@ def test_localsync_factsandcards():
@nose.with_setup(setup_local, teardown) @nose.with_setup(setup_local, teardown)
def test_localsync_threeway(): def test_localsync_threeway():
# deck1 (client) <-> deck2 (server) <-> deck3 (client) # deck1 (client) <-> deck2 (server) <-> deck3 (client)
deck3 = DeckStorage.Deck() deck3 = Deck()
client2 = SyncClient(deck3) client2 = SyncClient(deck3)
server2 = SyncServer(deck2) server2 = SyncServer(deck2)
client2.setServer(server2) client2.setServer(server2)

View file

@ -4,7 +4,7 @@ import nose, os, re
from tests.shared import assertException from tests.shared import assertException
from anki.errors import * from anki.errors import *
from anki import DeckStorage from anki import Deck
from anki.db import * from anki.db import *
from anki.models import FieldModel, Model, CardModel from anki.models import FieldModel, Model, CardModel
from anki.stdmodels import BasicModel from anki.stdmodels import BasicModel
@ -19,7 +19,7 @@ def getDeck():
import tempfile import tempfile
(fd, nam) = tempfile.mkstemp(suffix=".anki") (fd, nam) = tempfile.mkstemp(suffix=".anki")
os.unlink(nam) os.unlink(nam)
return DeckStorage.Deck(nam) return Deck(nam)
## opening/closing ## opening/closing
@ -30,7 +30,7 @@ def test_attachNew():
os.unlink(path) os.unlink(path)
except OSError: except OSError:
pass pass
deck = DeckStorage.Deck(path) deck = Deck(path)
# for attachOld() # for attachOld()
newPath = deck.path newPath = deck.path
deck.save() deck.save()
@ -39,18 +39,18 @@ def test_attachNew():
del deck del deck
def test_attachOld(): def test_attachOld():
deck = DeckStorage.Deck(newPath, backup=False) deck = Deck(newPath, backup=False)
assert deck.modified == newModified assert deck.modified == newModified
deck.close() deck.close()
def test_attachReadOnly(): def test_attachReadOnly():
# non-writeable dir # non-writeable dir
assertException(Exception, assertException(Exception,
lambda: DeckStorage.Deck("/attachroot")) lambda: Deck("/attachroot"))
# reuse tmp file from before, test non-writeable file # reuse tmp file from before, test non-writeable file
os.chmod(newPath, 0) os.chmod(newPath, 0)
assertException(Exception, assertException(Exception,
lambda: DeckStorage.Deck(newPath)) lambda: Deck(newPath))
os.chmod(newPath, 0666) os.chmod(newPath, 0666)
os.unlink(newPath) os.unlink(newPath)
@ -84,7 +84,7 @@ def test_saveAs():
# new deck should have zero cards # new deck should have zero cards
assert newDeck2.cardCount == 0 assert newDeck2.cardCount == 0
# but old deck should have reverted the unsaved changes # but old deck should have reverted the unsaved changes
newDeck = DeckStorage.Deck(path) newDeck = Deck(path)
assert newDeck.cardCount == 1 assert newDeck.cardCount == 1
newDeck.close() newDeck.close()

View file

@ -2,7 +2,7 @@
import tempfile, os, time import tempfile, os, time
import anki.media as m import anki.media as m
from anki import DeckStorage from anki import Deck
from anki.stdmodels import BasicModel from anki.stdmodels import BasicModel
from anki.utils import checksum from anki.utils import checksum
@ -10,7 +10,7 @@ def getDeck():
import tempfile import tempfile
(fd, nam) = tempfile.mkstemp(suffix=".anki") (fd, nam) = tempfile.mkstemp(suffix=".anki")
os.unlink(nam) os.unlink(nam)
return DeckStorage.Deck(nam) return Deck(nam)
# uniqueness check # uniqueness check
def test_unique(): def test_unique():

View file

@ -1,22 +0,0 @@
# coding: utf-8
import nose, os
from tests.shared import assertException
from anki.errors import *
from anki.facts import *
from anki import DeckStorage
from anki.utils import *
def test_tags():
return
# card = "one, two"
# fact = "two,three, two"
# cmodel = "four"
# print (card+","+fact+","+cmodel)
# print joinTags(parseTags(card+","+fact+","+cmodel))
# print sorted(canonifyTags(card+","+fact+","+cmodel))
# assert (sorted(canonifyTags(card+","+fact+","+cmodel)) ==
# ['four', 'one', 'three', 'two'])