def check_conn_and_params(self): if not anki.connection_open(): raise ValueError("Couldn't connect to Anki.") if not self.deck in anki.get_deck_names(): raise ValueError(f"Deck named '{self.deck}' not in Anki.") if not self.note_basic in anki.get_model_names(): raise ValueError( f"Note type named '{self.note_basic}' not in Anki.") if not self.note_cloze in anki.get_model_names(): raise ValueError( f"Note type named '{self.note_cloze}' not in Anki.") basic_field_names = anki.get_field_names(self.note_basic) if not "uid" in basic_field_names: raise ValueError( f"'{self.note_basic}' note type is missing a 'uid' field.") if len([fn for fn in basic_field_names[:2] if fn != "uid"]) != 2: raise ValueError( f"'{self.note_basic}' note type requires 2 fields (excluding the 'uid' field.)" ) cloze_field_names = anki.get_field_names(self.note_cloze) if not "uid" in cloze_field_names: raise ValueError( f"'{self.note_cloze}' note type is missing a 'uid' field.") if cloze_field_names[0] == "uid": raise ValueError( f"'{self.note_cloze}' note type requires 1 field (excluding the 'uid' field.)" ) if not anki.is_model_cloze(self.note_cloze): raise ValueError( f"note_cloze must be a cloze note type and '{self.note_cloze}' isn't." )
def setup(cls): args = util.get_default_args(RoamGraphAnkifier.__init__) import pdb; pdb.set_trace() if args["deck"] not in anki.get_deck_names(): anki.create_deck(args["deck"]) for model in [ROAM_BASIC, ROAM_CLOZE]: if not model['modelName'] in anki.get_model_names(): anki.create_model(model)
def init(overwrite=False): modelNames = anki.get_model_names() for model in [ROAM_BASIC, ROAM_CLOZE]: if not model['modelName'] in modelNames: anki.create_model(model) else: if overwrite: anki.update_model(model) else: logging.info( f"'{model['modelName']}' already in Anki. "\ "If you want to overwrite it, set `overwrite=True`")
def add_default_models(overwrite=False): res = {} for model in [ROAM_BASIC, ROAM_CLOZE]: modelNames = anki.get_model_names() name = model['modelName'] if not name in modelNames: res[name] = anki.create_model(model) elif overwrite: res[name] = anki.update_model(model) else: res[name] = None return res
def test_update_model(self): for test_model in [self.test_model_basic, self.test_model_cloze]: test_model = test_model.copy() # Create a model in anki modelNames = anki.get_model_names() while test_model["modelName"] in modelNames: test_model["modelName"] += "_1" anki.create_model(test_model) # Change the model's css then update it test_model["css"] = "test" anki.update_model(test_model) css = anki.get_model_styling(test_model["modelName"])["css"] self.assertEqual(test_model["css"], css)