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):
"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("""

View file

@ -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