Explicitly require Anki >= 2.1.45
Consolidate Anki version checks across files
This commit is contained in:
parent
056e722187
commit
700c6ae218
@ -13,6 +13,13 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import aqt
|
||||||
|
|
||||||
|
anki_version = tuple(int(segment) for segment in aqt.appVersion.split("."))
|
||||||
|
|
||||||
|
if anki_version < (2, 1, 45):
|
||||||
|
raise Exception("Minimum Anki version supported: 2.1.45")
|
||||||
|
|
||||||
import base64
|
import base64
|
||||||
import glob
|
import glob
|
||||||
import hashlib
|
import hashlib
|
||||||
@ -27,21 +34,15 @@ import unicodedata
|
|||||||
import anki
|
import anki
|
||||||
import anki.exporting
|
import anki.exporting
|
||||||
import anki.storage
|
import anki.storage
|
||||||
import aqt
|
|
||||||
from anki.cards import Card
|
from anki.cards import Card
|
||||||
from anki.consts import MODEL_CLOZE
|
from anki.consts import MODEL_CLOZE
|
||||||
from anki.exporting import AnkiPackageExporter
|
from anki.exporting import AnkiPackageExporter
|
||||||
from anki.importing import AnkiPackageImporter
|
from anki.importing import AnkiPackageImporter
|
||||||
from anki.notes import Note
|
from anki.notes import Note
|
||||||
|
from anki.errors import NotFoundError
|
||||||
from aqt.qt import Qt, QTimer, QMessageBox, QCheckBox
|
from aqt.qt import Qt, QTimer, QMessageBox, QCheckBox
|
||||||
|
|
||||||
from .edit import Edit
|
from .edit import Edit
|
||||||
|
|
||||||
try:
|
|
||||||
from anki.rsbackend import NotFoundError
|
|
||||||
except:
|
|
||||||
NotFoundError = Exception
|
|
||||||
|
|
||||||
from . import web, util
|
from . import web, util
|
||||||
|
|
||||||
|
|
||||||
@ -50,8 +51,6 @@ from . import web, util
|
|||||||
#
|
#
|
||||||
|
|
||||||
class AnkiConnect:
|
class AnkiConnect:
|
||||||
_anki21_version = int(aqt.appVersion.split('.')[-1])
|
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.log = None
|
self.log = None
|
||||||
self.timer = None
|
self.timer = None
|
||||||
@ -78,11 +77,7 @@ class AnkiConnect:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def save_model(self, models, ankiModel):
|
def save_model(self, models, ankiModel):
|
||||||
if self._anki21_version < 45:
|
models.update_dict(ankiModel)
|
||||||
models.save(ankiModel, True)
|
|
||||||
models.flush()
|
|
||||||
else:
|
|
||||||
models.update_dict(ankiModel)
|
|
||||||
|
|
||||||
def logEvent(self, name, data):
|
def logEvent(self, name, data):
|
||||||
if self.log is not None:
|
if self.log is not None:
|
||||||
@ -541,9 +536,8 @@ class AnkiConnect:
|
|||||||
# however, since 62c23c6816adf912776b9378c008a52bb50b2e8d (2.1.45)
|
# however, since 62c23c6816adf912776b9378c008a52bb50b2e8d (2.1.45)
|
||||||
# passing cardsToo to `rem` (long deprecated) won't raise an error!
|
# passing cardsToo to `rem` (long deprecated) won't raise an error!
|
||||||
# this is dangerous, so let's raise our own exception
|
# this is dangerous, so let's raise our own exception
|
||||||
if self._anki21_version >= 28:
|
raise Exception("Since Anki 2.1.28 it's not possible "
|
||||||
raise Exception("Since Anki 2.1.28 it's not possible "
|
"to delete decks without deleting cards as well")
|
||||||
"to delete decks without deleting cards as well")
|
|
||||||
try:
|
try:
|
||||||
self.startEditing()
|
self.startEditing()
|
||||||
decks = filter(lambda d: d in self.deckNames(), decks)
|
decks = filter(lambda d: d in self.deckNames(), decks)
|
||||||
|
@ -8,6 +8,8 @@ from anki.errors import NotFoundError
|
|||||||
from anki.consts import QUEUE_TYPE_SUSPENDED
|
from anki.consts import QUEUE_TYPE_SUSPENDED
|
||||||
from anki.utils import ids2str
|
from anki.utils import ids2str
|
||||||
|
|
||||||
|
from . import anki_version
|
||||||
|
|
||||||
|
|
||||||
# Edit dialog. Like Edit Current, but:
|
# Edit dialog. Like Edit Current, but:
|
||||||
# * has a Preview button to preview the cards for the note
|
# * has a Preview button to preview the cards for the note
|
||||||
@ -25,8 +27,6 @@ from anki.utils import ids2str
|
|||||||
|
|
||||||
DOMAIN_PREFIX = "foosoft.ankiconnect."
|
DOMAIN_PREFIX = "foosoft.ankiconnect."
|
||||||
|
|
||||||
anki_version = tuple(int(segment) for segment in aqt.appVersion.split("."))
|
|
||||||
|
|
||||||
|
|
||||||
def get_note_by_note_id(note_id):
|
def get_note_by_note_id(note_id):
|
||||||
return aqt.mw.col.get_note(note_id)
|
return aqt.mw.col.get_note(note_id)
|
||||||
|
@ -10,7 +10,7 @@ from _pytest.monkeypatch import MonkeyPatch # noqa
|
|||||||
from pytest_anki._launch import anki_running, temporary_user # noqa
|
from pytest_anki._launch import anki_running, temporary_user # noqa
|
||||||
from waitress import wasyncore
|
from waitress import wasyncore
|
||||||
|
|
||||||
from plugin import AnkiConnect
|
from plugin import AnkiConnect, anki_version
|
||||||
from plugin.edit import Edit
|
from plugin.edit import Edit
|
||||||
from plugin.util import DEFAULT_CONFIG
|
from plugin.util import DEFAULT_CONFIG
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ def waitress_patched_to_prevent_it_from_dying():
|
|||||||
@contextmanager
|
@contextmanager
|
||||||
def anki_patched_to_prevent_backups():
|
def anki_patched_to_prevent_backups():
|
||||||
with MonkeyPatch().context() as monkey:
|
with MonkeyPatch().context() as monkey:
|
||||||
if ac._anki21_version < 50:
|
if anki_version < (2, 1, 50):
|
||||||
monkey.setitem(aqt.profiles.profileConf, "numBackups", 0)
|
monkey.setitem(aqt.profiles.profileConf, "numBackups", 0)
|
||||||
else:
|
else:
|
||||||
monkey.setattr(anki.collection.Collection, "create_backup",
|
monkey.setattr(anki.collection.Collection, "create_backup",
|
||||||
|
@ -30,10 +30,6 @@ def test_deleteDeck(setup):
|
|||||||
assert {*before} - {*after} == {"test_deck"}
|
assert {*before} - {*after} == {"test_deck"}
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.skipif(
|
|
||||||
condition=ac._anki21_version < 28,
|
|
||||||
reason=f"Not applicable to Anki < 2.1.28"
|
|
||||||
)
|
|
||||||
def test_deleteDeck_must_be_called_with_cardsToo_set_to_True_on_later_api(setup):
|
def test_deleteDeck_must_be_called_with_cardsToo_set_to_True_on_later_api(setup):
|
||||||
with pytest.raises(Exception):
|
with pytest.raises(Exception):
|
||||||
ac.deleteDecks(decks=["test_deck"])
|
ac.deleteDecks(decks=["test_deck"])
|
||||||
|
Loading…
Reference in New Issue
Block a user