update rest of code to recognize&use new rendering

This commit is contained in:
Damien Elmes 2010-11-28 02:26:53 +09:00
parent ac8f613aca
commit 850d883ab4

View file

@ -9,7 +9,7 @@ The Deck
__docformat__ = 'restructuredtext' __docformat__ = 'restructuredtext'
import tempfile, time, os, random, sys, re, stat, shutil import tempfile, time, os, random, sys, re, stat, shutil
import types, traceback, simplejson, datetime import types, traceback, simplejson, datetime, pystache
from anki.db import * from anki.db import *
from anki.lang import _, ngettext from anki.lang import _, ngettext
@ -1434,6 +1434,8 @@ and due < :now""", now=time.time())
ok = True ok = True
for (type, format) in [("q", cardModel.qformat), for (type, format) in [("q", cardModel.qformat),
("a", cardModel.aformat)]: ("a", cardModel.aformat)]:
# compat
format = re.sub("%\((.+?)\)s", "{{\\1}}", format)
empty = {} empty = {}
local = {}; local.update(fact) local = {}; local.update(fact)
local['tags'] = u"" local['tags'] = u""
@ -1447,7 +1449,8 @@ and due < :now""", now=time.time())
empty['tags'] = "" empty['tags'] = ""
local['tags'] = fact.tags local['tags'] = fact.tags
try: try:
if format % local == format % empty: if (pystache.render(format, local) ==
pystache.render(format, empty)):
ok = False ok = False
break break
except (KeyError, TypeError, ValueError): except (KeyError, TypeError, ValueError):
@ -1794,10 +1797,14 @@ where id in %s""" % ids2str(ids), new=new.id, ord=new.ordinal)
model.fieldModels.remove(field) model.fieldModels.remove(field)
# update q/a formats # update q/a formats
for cm in model.cardModels: for cm in model.cardModels:
cm.qformat = cm.qformat.replace("%%(%s)s" % field.name, "") types = ("%%(%s)s" % field.name,
cm.qformat = cm.qformat.replace("%%(text:%s)s" % field.name, "") "%%(text:%s)s" % field.name,
cm.aformat = cm.aformat.replace("%%(%s)s" % field.name, "") # new style
cm.aformat = cm.aformat.replace("%%(text:%s)s" % field.name, "") "<<%s>>" % field.name,
"<<text:%s>>" % field.name)
for t in types:
for fmt in ('qformat', 'aformat'):
setattr(cm, fmt, getattr(cm, fmt).replace(t, ""))
self.updateCardsFromModel(model) self.updateCardsFromModel(model)
model.setModified() model.setModified()
self.flushMod() self.flushMod()
@ -1822,14 +1829,15 @@ update facts set modified = :t where modelId = :mid"""
def renameFieldModel(self, model, field, newName): def renameFieldModel(self, model, field, newName):
"Change FIELD's name in MODEL and update FIELD in all facts." "Change FIELD's name in MODEL and update FIELD in all facts."
for cm in model.cardModels: for cm in model.cardModels:
cm.qformat = cm.qformat.replace( types = ("%%(%s)s",
"%%(%s)s" % field.name, "%%(%s)s" % newName) "%%(text:%s)s",
cm.qformat = cm.qformat.replace( # new style
"%%(text:%s)s" % field.name, "%%(text:%s)s" % newName) "<<%s>>",
cm.aformat = cm.aformat.replace( "<<text:%s>>")
"%%(%s)s" % field.name, "%%(%s)s" % newName) for t in types:
cm.aformat = cm.aformat.replace( for fmt in ('qformat', 'aformat'):
"%%(text:%s)s" % field.name, "%%(text:%s)s" % newName) setattr(cm, fmt, getattr(cm, fmt).replace(t%field.name,
t%newName))
field.name = newName field.name = newName
model.setModified() model.setModified()
self.flushMod() self.flushMod()