prevent merging/deletion of public models, add source id

This commit is contained in:
Damien Elmes 2008-10-12 02:59:31 +09:00
parent 4685523791
commit 838ed803f7
2 changed files with 12 additions and 4 deletions

View file

@ -899,7 +899,8 @@ facts.id = cards.factId""", id=model.id))
def modelsGroupedByName(self): def modelsGroupedByName(self):
"Return hash of name -> [id, cardModelIds, fieldIds]" "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 = {} models = {}
for m in l: for m in l:
cms = self.s.column0(""" cms = self.s.column0("""

View file

@ -32,7 +32,7 @@ from anki.stats import Stats, globalStats
from anki.history import CardHistoryEntry from anki.history import CardHistoryEntry
from anki.stats import globalStats from anki.stats import globalStats
from anki.media import checksum from anki.media import checksum
from anki.utils import ids2str from anki.utils import ids2str, hexifyID
from anki.lang import _ from anki.lang import _
if simplejson.__version__ < "1.7.3": if simplejson.__version__ < "1.7.3":
@ -704,8 +704,9 @@ where media.id in %s""" % sids, now=time.time())
self.applyOneWayPayload(payload) self.applyOneWayPayload(payload)
def syncOneWayDeckName(self): def syncOneWayDeckName(self):
return self.deck.s.scalar("select name from sources where id = :id", return (self.deck.s.scalar("select name from sources where id = :id",
id=self.server.deckName) or self.server.deckName id=self.server.deckName) or
hexifyID(int(self.server.deckName)))
def prepareOneWaySync(self): def prepareOneWaySync(self):
"Sync setup. True if sync needed. Not used for local sync." "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 # model, facts, media
for key in keys: for key in keys:
self.updateObjsFromKey(payload[key], key) 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 # cards last, handled differently
self.updateOneWayCards(payload['cards']) self.updateOneWayCards(payload['cards'])
# update sync time # update sync time