From 838ed803f74c2a0fef69ed4f9f449ec564bd008d Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Sun, 12 Oct 2008 02:59:31 +0900 Subject: [PATCH] prevent merging/deletion of public models, add source id --- anki/deck.py | 3 ++- anki/sync.py | 13 ++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/anki/deck.py b/anki/deck.py index 6639cbe75..735e0031c 100644 --- a/anki/deck.py +++ b/anki/deck.py @@ -899,7 +899,8 @@ facts.id = cards.factId""", id=model.id)) def modelsGroupedByName(self): "Return hash of name -> [id, cardModelIds, fieldIds]" - l = self.s.all("select name, id from models order by created") + l = self.s.all("select name, id from models where source = 0" + " order by created") models = {} for m in l: cms = self.s.column0(""" diff --git a/anki/sync.py b/anki/sync.py index 617c4c993..75c9deed2 100644 --- a/anki/sync.py +++ b/anki/sync.py @@ -32,7 +32,7 @@ from anki.stats import Stats, globalStats from anki.history import CardHistoryEntry from anki.stats import globalStats from anki.media import checksum -from anki.utils import ids2str +from anki.utils import ids2str, hexifyID from anki.lang import _ if simplejson.__version__ < "1.7.3": @@ -704,8 +704,9 @@ where media.id in %s""" % sids, now=time.time()) self.applyOneWayPayload(payload) def syncOneWayDeckName(self): - return self.deck.s.scalar("select name from sources where id = :id", - id=self.server.deckName) or self.server.deckName + return (self.deck.s.scalar("select name from sources where id = :id", + id=self.server.deckName) or + hexifyID(int(self.server.deckName))) def prepareOneWaySync(self): "Sync setup. True if sync needed. Not used for local sync." @@ -744,6 +745,12 @@ where media.id in %s""" % sids, now=time.time()) # model, facts, media for key in keys: self.updateObjsFromKey(payload[key], key) + # models need their source tagged + for m in payload["models"]: + self.deck.s.statement("update models set source = :s " + "where id = :id", + s=self.server.deckName, + id=m['id']) # cards last, handled differently self.updateOneWayCards(payload['cards']) # update sync time