/ __init__.py
__init__.py
1 from anki.hooks import wrap 2 from aqt import mw 3 from aqt.operations import CollectionOp 4 from aqt.reviewer import Reviewer 5 from aqt.utils import tooltip 6 from typing import Callable 7 8 def notify_user(cid, is_verbose): 9 if is_verbose: 10 tooltip("Skipped card #" + str(cid)) 11 print("DEBUG: Skipped card #" + str(cid)) 12 13 def process_review_card(self: Reviewer, _old: Callable) -> None: 14 if self.card.type != 0: 15 return _old(self) 16 17 if not mw or not mw.col or not mw.col.db: 18 raise Exception("Incubator: Anki is not initialized properly") 19 config = mw.addonManager.getConfig(__name__) 20 21 blocking_siblings = mw.col.find_cards(query=f"\ 22 nid:{self.card.nid}\ 23 (rated:{config['past_gap']+1} OR prop:due<={config['future_gap']})\ 24 ") 25 if blocking_siblings: 26 CollectionOp(mw, lambda col: col.sched.bury_cards([self.card.id])).success( 27 lambda _: notify_user(self.card.id, config['verbose']) 28 ).run_in_background() 29 else: 30 _old(self) 31 32 Reviewer._showQuestion = wrap(Reviewer._showQuestion, process_review_card, "around") # type: ignore