Compare commits

...

5 Commits

Author SHA1 Message Date
Philipp Matthias Schäfer
ba67c52d9b Use non-deprecated snake case names of collection methods 2024-10-05 11:30:30 -07:00
Philipp Matthias Schäfer
cc027f8ab8 Replace calls to deprecated flush() with col.update_note/card
The changes passes skip_undo_entry to update_note/card, because the
implementation of the deprecated flush() method did so. Whether this is the
right decision for our use case was not checked/thought about.
2024-10-05 11:30:30 -07:00
Philipp Matthias Schäfer
dc96cdc76c Switch from deprecated names of anki/utils.py functions 2024-10-05 11:30:30 -07:00
Philipp Matthias Schäfer
6a2cc2dec1 Remove calls to deprecated (and empty) method autosave 2024-10-05 11:30:30 -07:00
Philipp Matthias Schäfer
172d1fb20f Require current Anki version 2024-10-05 11:30:30 -07:00

View File

@ -15,10 +15,11 @@
import aqt import aqt
required_anki_version = (26, 6, 3)
anki_version = tuple(int(segment) for segment in aqt.appVersion.split(".")) anki_version = tuple(int(segment) for segment in aqt.appVersion.split("."))
if anki_version < (2, 1, 45): if anki_version < required_anki_version:
raise Exception("Minimum Anki version supported: 2.1.45") raise Exception("Minimum Anki version supported: {required_anki_version[0]}.{required_anki_version[1]}.{required_anki_version[2]}")
import base64 import base64
import glob import glob
@ -310,7 +311,7 @@ class AnkiConnect:
val = note.fields[0] val = note.fields[0]
if not val.strip(): if not val.strip():
return 1 return 1
csum = anki.utils.fieldChecksum(val) csum = anki.utils.field_checksum(val)
# Create dictionary of deck ids # Create dictionary of deck ids
dids = None dids = None
@ -358,13 +359,13 @@ class AnkiConnect:
def getCard(self, card_id: int) -> Card: def getCard(self, card_id: int) -> Card:
try: try:
return self.collection().getCard(card_id) return self.collection().get_card(card_id)
except NotFoundError: except NotFoundError:
self.raiseNotFoundError('Card was not found: {}'.format(card_id)) self.raiseNotFoundError('Card was not found: {}'.format(card_id))
def getNote(self, note_id: int) -> Note: def getNote(self, note_id: int) -> Note:
try: try:
return self.collection().getNote(note_id) return self.collection().get_note(note_id)
except NotFoundError: except NotFoundError:
self.raiseNotFoundError('Note was not found: {}'.format(note_id)) self.raiseNotFoundError('Note was not found: {}'.format(note_id))
@ -567,7 +568,7 @@ class AnkiConnect:
self.startEditing() self.startEditing()
did = self.collection().decks.id(deck) did = self.collection().decks.id(deck)
mod = anki.utils.intTime() mod = anki.utils.int_time()
usn = self.collection().usn() usn = self.collection().usn()
# normal cards # normal cards
@ -612,7 +613,7 @@ class AnkiConnect:
collection = self.collection() collection = self.collection()
config['id'] = str(config['id']) config['id'] = str(config['id'])
config['mod'] = anki.utils.intTime() config['mod'] = anki.utils.int_time()
config['usn'] = collection.usn() config['usn'] = collection.usn()
if int(config['id']) not in [c['id'] for c in collection.decks.all_config()]: if int(config['id']) not in [c['id'] for c in collection.decks.all_config()]:
return False return False
@ -741,7 +742,6 @@ class AnkiConnect:
nCardsAdded = collection.addNote(ankiNote) nCardsAdded = collection.addNote(ankiNote)
if nCardsAdded < 1: if nCardsAdded < 1:
raise Exception('The field values you have provided would make an empty question on all cards.') raise Exception('The field values you have provided would make an empty question on all cards.')
collection.autosave()
return ankiNote.id return ankiNote.id
@ -829,9 +829,7 @@ class AnkiConnect:
pictureObjectOrList = note.get('picture') pictureObjectOrList = note.get('picture')
self.addMedia(ankiNote, pictureObjectOrList, util.MediaType.Picture) self.addMedia(ankiNote, pictureObjectOrList, util.MediaType.Picture)
ankiNote.flush() self.collection().update_note(ankiNote, skip_undo_entry=True);
self.collection().autosave()
@util.api() @util.api()
@ -895,11 +893,8 @@ class AnkiConnect:
# Update the tags # Update the tags
anki_note.tags = new_tags anki_note.tags = new_tags
# Flush changes to ensure they are saved # Update note to ensure changes are saved
anki_note.flush() collection.update_note(anki_note, skip_undo_entry=True);
# Save changes to the collection
collection.autosave()
@util.api() @util.api()
def updateNoteTags(self, note, tags): def updateNoteTags(self, note, tags):
@ -953,7 +948,7 @@ class AnkiConnect:
if note.has_tag(tag_to_replace): if note.has_tag(tag_to_replace):
note.remove_tag(tag_to_replace) note.remove_tag(tag_to_replace)
note.add_tag(replace_with_tag) note.add_tag(replace_with_tag)
note.flush() self.collection().update_note(note, skip_undo_entry=True);
self.window().requireReset() self.window().requireReset()
self.window().progress.finish() self.window().progress.finish()
@ -970,7 +965,7 @@ class AnkiConnect:
if note.has_tag(tag_to_replace): if note.has_tag(tag_to_replace):
note.remove_tag(tag_to_replace) note.remove_tag(tag_to_replace)
note.add_tag(replace_with_tag) note.add_tag(replace_with_tag)
note.flush() self.collection().update_note(note, skip_undo_entry=True);
self.window().requireReset() self.window().requireReset()
self.window().progress.finish() self.window().progress.finish()
@ -989,7 +984,7 @@ class AnkiConnect:
couldSetEaseFactors.append(True) couldSetEaseFactors.append(True)
ankiCard.factor = easeFactors[i] ankiCard.factor = easeFactors[i]
ankiCard.flush() self.collection().update_card(ankiCard, skip_undo_entry=True)
return couldSetEaseFactors return couldSetEaseFactors
@ -1019,7 +1014,7 @@ class AnkiConnect:
ankiCard = self.getCard(card) ankiCard = self.getCard(card)
for i, key in enumerate(keys): for i, key in enumerate(keys):
setattr(ankiCard, key, newValues[i]) setattr(ankiCard, key, newValues[i])
ankiCard.flush() self.collection().update_card(ankiCard, skip_undo_entry=True)
result.append(True) result.append(True)
except Exception as e: except Exception as e:
result.append([False, str(e)]) result.append([False, str(e)])