Exemplo n.º 1
0
 def __init__(
     self,
     db: DBProxy,
     backend: RustBackend,
     server: Optional["anki.storage.ServerData"] = None,
 ) -> None:
     self.backend = backend
     self._debugLog = not server
     self.db = db
     self.path = db._path
     self._openLog()
     self.log(self.path, anki.version)
     self.server = server
     self._lastSave = time.time()
     self.clearUndo()
     self.media = MediaManager(self, server is not None)
     self.models = ModelManager(self)
     self.decks = DeckManager(self)
     self.tags = TagManager(self)
     self.conf = ConfigManager(self)
     self.load()
     if not self.crt:
         d = datetime.datetime.today()
         d -= datetime.timedelta(hours=4)
         d = datetime.datetime(d.year, d.month, d.day)
         d += datetime.timedelta(hours=4)
         self.crt = int(time.mktime(d.timetuple()))
     self._loadScheduler()
     if not self.conf.get("newBury", False):
         self.conf["newBury"] = True
         self.setMod()
Exemplo n.º 2
0
 def __init__(self, db, server=False, log=False):
     self._debugLog = log
     self.db = db
     self.path = db._path
     self._openLog()
     self.log(self.path, anki.version)
     self.server = server
     self._lastSave = time.time()
     self.clearUndo()
     self.media = MediaManager(self, server)
     self.models = ModelManager(self)
     self.decks = DeckManager(self)
     self.tags = TagManager(self)
     self.load()
     if not self.crt:
         d = datetime.datetime.today()
         d -= datetime.timedelta(hours=4)
         d = datetime.datetime(d.year, d.month, d.day)
         d += datetime.timedelta(hours=4)
         self.crt = int(time.mktime(d.timetuple()))
     self.sched = Scheduler(self)
     if not self.conf.get("newBury", False):
         mod = self.db.mod
         self.sched.unburyCards()
         self.db.mod = mod
Exemplo n.º 3
0
 def __init__(self, db, server=False, log=False):
     self.devMode = os.getenv("ANKIDEV", "")
     self._debugLog = log
     self.db = db
     self.path = db._path
     self._openLog()
     self.log(self.path, anki.version)
     self.server = server
     self._lastSave = time.time()
     self.clearUndo()
     self.media = MediaManager(self, server)
     self.models = ModelManager(self)
     self.decks = DeckManager(self)
     self.tags = TagManager(self)
     self.load()
     if not self.crt:
         d = datetime.datetime.today()
         d -= datetime.timedelta(hours=4)
         d = datetime.datetime(d.year, d.month, d.day)
         d += datetime.timedelta(hours=4)
         self.crt = int(time.mktime(d.timetuple()))
     if not server:
         self.conf['localOffset'] = timezoneOffset()
     self._loadScheduler()
     if not self.conf.get("newBury", False):
         self.conf['newBury'] = True
         self.setMod()
Exemplo n.º 4
0
 def __init__(self, db, server=False, log=False):
     self.ecdict = StarDict(os.path.join(get_current(), "test.db"))
     self._debugLog = log
     self.db = db
     self.path = db._path
     self._openLog()
     self.log(self.path, anki.version)
     self.server = server
     self._lastSave = time.time()
     self.clearUndo()
     self.media = MediaManager(self, server)
     self.models = ModelManager(self)
     self.decks = DeckManager(self)
     self.tags = TagManager(self)
     self.load()
     if not self.crt:
         d = datetime.datetime.today()
         d -= datetime.timedelta(hours=4)
         d = datetime.datetime(d.year, d.month, d.day)
         d += datetime.timedelta(hours=4)
         self.crt = int(time.mktime(d.timetuple()))
     self._loadScheduler()
     if not self.conf.get("newBury", False):
         self.conf['newBury'] = True
         self.setMod()
Exemplo n.º 5
0
 def __init__(self, db, server=False):
     self.db = db
     self.path = db._path
     self.server = server
     self._lastSave = time.time()
     self.clearUndo()
     self.media = MediaManager(self)
     self.models = ModelManager(self)
     self.decks = DeckManager(self)
     self.tags = TagManager(self)
     self.load()
     if not self.crt:
         d = datetime.datetime.today()
         d -= datetime.timedelta(hours=4)
         d = datetime.datetime(d.year, d.month, d.day)
         d += datetime.timedelta(hours=4)
         self.crt = int(time.mktime(d.timetuple()))
     self.undoEnabled = False
     self.sessionStartReps = 0
     self.sessionStartTime = 0
     self.lastSessionStart = 0
     self._stdSched = Scheduler(self)
     self.sched = self._stdSched
     # check for improper shutdown
     self.cleanup()
Exemplo n.º 6
0
    def __init__(self, db, server=False, log=False):
        self._debugLog = log
        self.db = db
        self.path = db._path

        # TODO: write tests for this
        init_peewee_database(self.path)
        run_migrations(self.path)

        self._openLog()
        self.log(self.path, anki.version)
        self.server = server
        self._lastSave = time.time()
        self.clearUndo()
        self.media = MediaManager(self, server)
        self.models = ModelManager(self)
        self.decks = DeckManager(self)
        self.tags = TagManager(self)
        self.load()
        if not self.crt:
            d = datetime.datetime.today()
            d -= datetime.timedelta(hours=4)
            d = datetime.datetime(d.year, d.month, d.day)
            d += datetime.timedelta(hours=4)
            self.crt = int(time.mktime(d.timetuple()))
        self._loadScheduler()
        if not self.conf.get("newBury", False):
            self.conf['newBury'] = True
            self.setMod()
Exemplo n.º 7
0
    def create_note_type(self, noteTypeName, front, back, css):
        # Create empty note type
        mm = ModelManager(mw.col)
        nt = mm.new(noteTypeName)

        # Add fields into note type
        mm.add_field(nt, mm.new_field("Word"))
        mm.add_field(nt, mm.new_field("WordType"))
        mm.add_field(nt, mm.new_field("Phonetic"))
        mm.add_field(nt, mm.new_field("Example"))
        mm.add_field(nt, mm.new_field("Sound"))
        mm.add_field(nt, mm.new_field("Image"))
        mm.add_field(nt, mm.new_field("Content"))
        mm.add_field(nt, mm.new_field("Copyright"))

        # Add template into note type
        template = mm.new_template("AnkiFlash")
        template["qfmt"] = front
        template["afmt"] = back
        nt["css"] = css
        mm.add_template(nt, template)

        # Save model / note type
        mm.save(nt)

        # Update UI
        mw.reset()
Exemplo n.º 8
0
 def __init__(
     self,
     db: DBProxy,
     backend: RustBackend,
     server: bool = False,
     log: bool = False,
 ) -> None:
     self.backend = backend
     self._debugLog = log
     self.db = db
     self.path = db._path
     self._openLog()
     self.log(self.path, anki.version)
     self.server = server
     self._lastSave = time.time()
     self.clearUndo()
     self.media = MediaManager(self, server)
     self.models = ModelManager(self)
     self.decks = DeckManager(self)
     self.tags = TagManager(self)
     self.conf = ConfigManager(self)
     self._loadScheduler()
Exemplo n.º 9
0
    def __init__(
        self,
        path: str,
        backend: Optional[RustBackend] = None,
        server: bool = False,
        log: bool = False,
    ) -> None:
        self._backend = backend or RustBackend(server=server)
        self.db: Optional[DBProxy] = None
        self._should_log = log
        self.server = server
        self.path = os.path.abspath(path)
        self.reopen()

        self.log(self.path, anki.version)
        self._lastSave = time.time()
        self.clearUndo()
        self.media = MediaManager(self, server)
        self.models = ModelManager(self)
        self.decks = DeckManager(self)
        self.tags = TagManager(self)
        self.conf = ConfigManager(self)
        self._loadScheduler()
Exemplo n.º 10
0
    def update_note_type(self, noteTypeName, front, back, css):

        noteType = mw.col.models.byName(noteTypeName)
        if noteType == None:
            raise RuntimeError("{} Note type not found!".format(noteTypeName))

        # Get template
        tempates = noteType["tmpls"]
        for temp in tempates:
            if temp["name"] == "AnkiFlash":
                template = temp

        # Add template into note type
        template["qfmt"] = front
        template["afmt"] = back
        noteType["css"] = css

        # Save model / note type
        mm = ModelManager(mw.col)
        mm.save(noteType)

        # Update UI
        mw.reset()
Exemplo n.º 11
0
    def add(self, front, back, deck_name, model_name):

        default_deck = self.collection.decks.allNames()[0]
        default_model = self.collection.models.allNames()[0]
        
        deck_name = unicode(deck_name or default_deck, sys.getfilesystemencoding())
        model_name = unicode(model_name or default_model, sys.getfilesystemencoding())

        model = self.collection.models.byName(model_name)
        if not model:
            mm = ModelManager(self.collection)
            model = mm.new(model_name)
            mm.save(model)

        model['did'] = did = self.collection.decks.id(deck_name)
        self.collection.models.save()
        
        note = self.collection.newNote()        
        note['Front']= unicode(front or "", sys.getfilesystemencoding())
        note['Back']= unicode(back or "", sys.getfilesystemencoding())
        note.model()['did']= did
        self.collection.addNote(note)
        self.collection.save()
        self.collection.genCards(self.collection.models.nids(model))