示例#1
0
 def rename(self, g, newName):
     "Rename deck prefix to NAME if not exists. Updates children."
     # make sure target node doesn't already exist
     if newName in self.allNames():
         raise DeckRenameError(_("That deck already exists."))
     # ensure we have parents
     newName = self._ensureParents(newName)
     # make sure we're not nesting under a filtered deck
     if '::' in newName:
         newParent = '::'.join(newName.split('::')[:-1])
         if self.byName(newParent)['dyn']:
             raise DeckRenameError(
                 _("A filtered deck cannot have subdecks."))
     # rename children
     for grp in self.all():
         if grp['name'].startswith(g['name'] + "::"):
             grp['name'] = grp['name'].replace(g['name'] + "::",
                                               newName + "::", 1)
             self.save(grp)
     # adjust name
     g['name'] = newName
     # ensure we have parents again, as we may have renamed parent->child
     newName = self._ensureParents(newName)
     self.save(g)
     # renaming may have altered active did order
     self.maybeAddToActive()
示例#2
0
文件: decks.py 项目: thanhturin/anki
 def rename(self, g: Dict[str, Any], newName: str) -> None:
     "Rename deck prefix to NAME if not exists. Updates children."
     # make sure target node doesn't already exist
     if self.byName(newName):
         raise DeckRenameError(_("That deck already exists."))
     # make sure we're not nesting under a filtered deck
     for p in self.parentsByName(newName):
         if p["dyn"]:
             raise DeckRenameError(
                 _("A filtered deck cannot have subdecks."))
     # ensure we have parents
     newName = self._ensureParents(newName)
     # rename children
     for grp in self.all():
         if grp["name"].startswith(g["name"] + "::"):
             grp["name"] = grp["name"].replace(g["name"] + "::",
                                               newName + "::", 1)
             self.save(grp)
     # adjust name
     g["name"] = newName
     # ensure we have parents again, as we may have renamed parent->child
     newName = self._ensureParents(newName)
     self.save(g)
     # renaming may have altered active did order
     self.maybeAddToActive()
示例#3
0
文件: decks.py 项目: fossabot/anki
    def rename(self, g, newName):
        """Rename the deck object g to newName. Updates
        children. Creates parents of newName if required.

        If newName already exists or if it a descendant of a filtered
        deck, the operation is aborted."""
        # make sure target node doesn't already exist
        if newName in self.allNames():
            raise DeckRenameError(_("That deck already exists."))
        # ensure we have parents.
        newName = self._ensureParents(newName)
        # make sure we're not nesting under a filtered deck
        for p in self.parentsByName(newName):
            if p['dyn']:
                raise DeckRenameError(
                    _("A filtered deck cannot have subdecks."))
        # ensure we have parents
        newName = self._ensureParents(newName)
        # rename children
        for grp in self.all():
            if grp['name'].startswith(g['name'] + "::"):
                grp['name'] = grp['name'].replace(g['name'] + "::",
                                                  newName + "::", 1)
                self.save(grp)
        # adjust name
        g['name'] = newName
        # ensure we have parents again, as we may have renamed parent->child
        newName = self._ensureParents(newName)
        self.save(g)
        # renaming may have altered active did order
        self.maybeAddToActive()
示例#4
0
文件: decks.py 项目: venhow/anki
 def update(self, g: Dict[str, Any], preserve_usn=True) -> None:
     "Add or update an existing deck. Used for syncing and merging."
     try:
         self.col.backend.add_or_update_deck_legacy(g, preserve_usn)
     except anki.rsbackend.DeckIsFilteredError:
         raise DeckRenameError("deck was filtered")
     except anki.rsbackend.ExistsError:
         raise DeckRenameError("deck already exists")
示例#5
0
 def update(self, g: Dict[str, Any], preserve_usn=True) -> None:
     "Add or update an existing deck. Used for syncing and merging."
     try:
         g["id"] = self.col.backend.add_or_update_deck_legacy(
             deck=to_json_bytes(g), preserve_usn_and_mtime=preserve_usn)
     except anki.rsbackend.DeckIsFilteredError:
         raise DeckRenameError("deck was filtered")
示例#6
0
文件: decks.py 项目: humbatoa/anki
 def update(self, g: Deck, preserve_usn: bool = True) -> None:
     "Add or update an existing deck. Used for syncing and merging."
     try:
         g["id"] = self.col._backend.add_or_update_deck_legacy(
             deck=to_json_bytes(g), preserve_usn_and_mtime=preserve_usn)
     except DeckIsFilteredError as exc:
         raise DeckRenameError("deck was filtered") from exc
示例#7
0
def rename(self, g, newName):
    """Rename the deck object g to newName. Updates
    descendants. Creates parents of newName if required.

    If newName already exists, the content of g is merged in
    it. If newName is a descendant of a filtered deck, the
    operation is aborted.
    """
    oldName = g['name']
    # ensure we have parents
    newName = self._ensureParents(newName)
    # make sure we're not nesting under a filtered deck
    for p in self.parentsByName(newName):
        if p['dyn']:
            raise DeckRenameError(_("A filtered deck cannot have subdecks."))
    children = self.children(g['id']) + [g['id']]
    childrenDecks = list(map(self.get, children))
    for grp in childrenDecks:
        newChildName = grp['name'].replace(oldName, newName, 1)
        newGrp = self.byName(newChildName)
        grpId = grp["id"]
        if newGrp:  # deck with same name already existed. We move cards.
            self.col.db.execute(
                "update cards set did=?, mod=?, usn=? where did=?",
                newGrp["id"], intTime(), self.col.usn(), grpId)
            self.rem(grpId, childrenToo=False)
        else:  # no deck with same name. Deck renamed.
            grp['name'] = newChildName
            self.save(grp)
    # ensure we have parents again, as we may have renamed parent->Descendant
    self._ensureParents(newName)
    # renaming may have altered active did order
    self.maybeAddToActive()
示例#8
0
文件: decks.py 项目: kingdynasty/anki
 def _canDragAndDrop(self, draggedDeckName, ontoDeckName):
     if draggedDeckName == ontoDeckName \
             or self._isParent(ontoDeckName, draggedDeckName) \
             or self._isAncestor(draggedDeckName, ontoDeckName):
         return False
     elif self.byName(ontoDeckName)['dyn']:
         raise DeckRenameError(_("A filtered deck cannot have subdecks."))
     else:
         return True
示例#9
0
 def rename(self, g, newName):
     "Rename deck prefix to NAME if not exists. Updates children."
     # make sure target node doesn't already exist
     if newName in self.allNames():
         raise DeckRenameError(_("That deck already exists."))
     # ensure we have parents
     newName = self._ensureParents(newName)
     # rename children
     for grp in self.all():
         if grp['name'].startswith(g['name'] + "::"):
             grp['name'] = grp['name'].replace(g['name'] + "::",
                                               newName + "::")
             self.save(grp)
     # adjust name and save
     g['name'] = newName
     self.save(g)
示例#10
0
 def rename(self, g, newName):
     "Rename deck prefix to NAME if not exists. Updates children."
     # make sure target node doesn't already exist
     if newName in self.allNames():
         raise DeckRenameError(_("That deck already exists."))
     # ensure we have parents
     newName = self._ensureParents(newName)
     # rename children
     for grp in self.all():
         if grp['name'].startswith(g['name'] + "::"):
             grp['name'] = grp['name'].replace(g['name'] + "::",
                                               newName + "::", 1)
             self.save(grp)
     # adjust name
     g['name'] = newName
     # ensure we have parents again, as we may have renamed parent->child
     newName = self._ensureParents(newName)
     self.save(g)
     # renaming may have altered active did order
     self.maybeAddToActive()