Exemple #1
0
 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)
Exemple #3
0
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)