ensure model/template gid exists; mark schema modified when group deleted

This commit is contained in:
Damien Elmes 2011-04-06 22:31:33 +09:00
parent 86a7106eab
commit c5e7756304
3 changed files with 10 additions and 2 deletions

View file

@ -160,6 +160,7 @@ qconf=?, conf=?, data=?""",
if not self.schemaChanged(): if not self.schemaChanged():
# next sync will be full # next sync will be full
self.emptyTrash() self.emptyTrash()
runHook("modSchema")
self.scm = intTime() self.scm = intTime()
def schemaChanged(self): def schemaChanged(self):
@ -323,7 +324,7 @@ select id from facts where id not in (select distinct fid from cards)""")
card.id = self.nextID("cid") card.id = self.nextID("cid")
card.fid = fact.id card.fid = fact.id
card.ord = template['ord'] card.ord = template['ord']
card.gid = template['gid'] or fact.gid card.gid = self.defaultGroup(template['gid'] or fact.gid)
card.due = due card.due = due
if flush: if flush:
card.flush() card.flush()
@ -570,7 +571,13 @@ update facts set tags = :t, mod = :n where id = :id""", [fix(row) for row in res
simplejson.dumps(anki.groups.defaultData)).lastrowid simplejson.dumps(anki.groups.defaultData)).lastrowid
return id return id
def defaultGroup(self, id):
if id == 1:
return 1
return self.db.scalar("select id from groups where id = ?", id) or 1
def delGroup(self, gid): def delGroup(self, gid):
self.modSchema()
self.db.execute("update cards set gid = 1 where gid = ?", gid) self.db.execute("update cards set gid = 1 where gid = ?", gid)
self.db.execute("update facts set gid = 1 where gid = ?", gid) self.db.execute("update facts set gid = 1 where gid = ?", gid)
self.db.execute("delete from groups where id = ?", gid) self.db.execute("delete from groups where id = ?", gid)

View file

@ -18,7 +18,7 @@ class Fact(object):
else: else:
self.id = None self.id = None
self._model = model self._model = model
self.gid = 1 self.gid = deck.defaultGroup(model.conf['gid'])
self.mid = model.id self.mid = model.id
self.crt = intTime() self.crt = intTime()
self.mod = self.crt self.mod = self.crt

View file

@ -8,6 +8,7 @@ from anki.lang import _
# Models # Models
########################################################################## ##########################################################################
# gid may point to non-existent group
defaultConf = { defaultConf = {
'sortf': 0, 'sortf': 0,