def processDeckTransactions_FORK(self, data): orig_did = self.getDID(data["on"]) # orig_deck = mw.col.decks.get(orig_did) new_did = mw.col.decks.id(data["data"]["name"]) new_deck = mw.col.decks.get(new_did) for cid in mw.col.decks.cids(orig_did): card = mw.col.getCard(cid) note = card.note(reload=True) model = note.model() createNewModel = False # create new model? if createNewModel: new_model = mw.col.models.copy(model) # models.copy saves new_note = copy.deepcopy(note) new_note.col = note.col new_note.id = timestampID(mw.col.db, "notes") new_note.guid = guid64() if createNewModel: new_note._model = new_model new_note.mid = new_model['id'] new_note.flush() new_card = copy.deepcopy(card) new_card.col = card.col new_card.id = timestampID(mw.col.db, "cards") new_card.crt = intTime() new_card.did = new_did new_card.nid = new_note.id new_card.flush() mw.col.decks.save(new_deck) mw.col.decks.flush()
def newData(self, n): id = self._nextID self._nextID += 1 self._ids.append(id) if not self.processFields(n): return # note id for card updates later for ord, c in n.cards.items(): self._cards.append((id, ord, c)) self.col.tags.register(n.tags) return [id, guid64(), self.model['id'], intTime(), self.col.usn(), self.col.tags.join(n.tags), n.fieldsStr, "", "", 0, ""]
def __init__(self, col, model=None, id=None): assert not (model and id) self.col = col if id: self.id = id self.load() else: self.id = timestampID(col.db, "notes") self.guid = guid64() self._model = model self.mid = model['id'] self.tags = [] self.fields = [""] * len(self._model['flds']) self.flags = 0 self.data = "" self._fmap = self.col.models.fieldMap(self._model) self.scm = self.col.scm
def newData(self, n: ForeignNote) -> Optional[list]: id = self._nextID self._nextID += 1 self._ids.append(id) self.processFields(n) # note id for card updates later for ord, c in list(n.cards.items()): self._cards.append((id, ord, c)) return [ id, guid64(), self.model["id"], intTime(), self.col.usn(), self.col.tags.join(n.tags), n.fieldsStr, "", 0, 0, "", ]
def __init__(self, col, model: Optional[Any] = None, id: Optional[int] = None) -> None: assert not (model and id) self.col = col self.newlyAdded = False if id: self.id = id self.load() else: self.id = timestampID(col.db, "notes") self.guid = guid64() self._model = model self.mid = model['id'] self.tags = [] self.fields = [""] * len(self._model['flds']) self.flags = 0 self.data = "" self._fmap = self.col.models.fieldMap(self._model) self.scm = self.col.scm
def __init__( self, col: anki.storage._Collection, model: Optional[NoteType] = None, id: Optional[int] = None, ) -> None: assert not (model and id) self.col = col self.newlyAdded = False if id: self.id = id self.load() else: self.id = timestampID(col.db, "notes") self.guid = guid64() self._model = model self.mid = model["id"] self.tags = [] self.fields = [""] * len(self._model["flds"]) self.flags = 0 self.data = "" self._fmap = self.col.models.fieldMap(self._model) self.scm = self.col.scm
def newData( self, n: ForeignNote ) -> Tuple[NoteID, str, NoteTypeID, int, int, str, str, str, int, int, str]: id = self._nextID self._nextID = NoteID(self._nextID + 1) self._ids.append(id) self.processFields(n) # note id for card updates later for ord, c in list(n.cards.items()): self._cards.append((id, ord, c)) return ( id, guid64(), self.model["id"], intTime(), self.col.usn(), self.col.tags.join(n.tags), n.fieldsStr, "", 0, 0, "", )
def updateCompleteDeck(self, data): self.startEditing() did = self.decks().id(data['deck']) self.decks().flush() model_manager = self.collection().models for _, card in data['cards'].items(): self.database().execute( 'replace into cards (id, nid, did, ord, type, queue, due, ivl, factor, reps, lapses, left, ' 'mod, usn, odue, odid, flags, data) ' 'values (' + '?,' * (12 + 6 - 1) + '?)', card['id'], card['nid'], did, card['ord'], card['type'], card['queue'], card['due'], card['ivl'], card['factor'], card['reps'], card['lapses'], card['left'], intTime(), -1, 0, 0, 0, 0 ) note = data['notes'][str(card['nid'])] tags = self.collection().tags.join(self.collection().tags.canonify(note['tags'])) self.database().execute( 'replace into notes(id, mid, tags, flds,' 'guid, mod, usn, flags, data, sfld, csum) values (' + '?,' * (4 + 7 - 1) + '?)', note['id'], note['mid'], tags, joinFields(note['fields']), guid64(), intTime(), -1, 0, 0, '', fieldChecksum(note['fields'][0]) ) model = data['models'][str(note['mid'])] if not model_manager.get(model['id']): model_o = model_manager.new(model['name']) for field_name in model['fields']: field = model_manager.newField(field_name) model_manager.addField(model_o, field) for template_name in model['templateNames']: template = model_manager.newTemplate(template_name) model_manager.addTemplate(model_o, template) model_o['id'] = model['id'] model_manager.update(model_o) model_manager.flush() self.stopEditing()
def updateCompleteDeck(self, data): self.startEditing() did = self.decks().id(data["deck"]) self.decks().flush() model_manager = self.collection().models for _, card in data["cards"].items(): self.database().execute( "replace into cards (id, nid, did, ord, type, queue, due, ivl, factor, reps, lapses, left, " "mod, usn, odue, odid, flags, data) " "values (" + "?," * (12 + 6 - 1) + "?)", card["id"], card["nid"], did, card["ord"], card["type"], card["queue"], card["due"], card["ivl"], card["factor"], card["reps"], card["lapses"], card["left"], intTime(), -1, 0, 0, 0, 0 ) note = data["notes"][str(card["nid"])] tags = self.collection().tags.join(self.collection().tags.canonify(note["tags"])) self.database().execute( "replace into notes(id, mid, tags, flds," "guid, mod, usn, flags, data, sfld, csum) values (" + "?," * (4 + 7 - 1) + "?)", note["id"], note["mid"], tags, joinFields(note["fields"]), guid64(), intTime(), -1, 0, 0, "", fieldChecksum(note["fields"][0]) ) model = data["models"][str(note["mid"])] if not model_manager.get(model["id"]): model_o = model_manager.new(model["name"]) for field_name in model["fields"]: field = model_manager.newField(field_name) model_manager.addField(model_o, field) for template_name in model["templateNames"]: template = model_manager.newTemplate(template_name) model_manager.addTemplate(model_o, template) model_o["id"] = model["id"] model_manager.update(model_o) model_manager.flush() self.stopEditing()