From 3173073cff8ef15ec25378b3f79e348fdf160c4e Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Tue, 1 May 2012 15:33:54 +0900 Subject: [PATCH] make sure to escape fields when renaming thanks to ospalh for the heads up --- anki/models.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/anki/models.py b/anki/models.py index 3b0d9ac57..6beea1b05 100644 --- a/anki/models.py +++ b/anki/models.py @@ -265,14 +265,18 @@ select id from cards where nid in (select id from notes where mid = ?)""", def renameField(self, m, field, newName): self.col.modSchema() pat = "({{|[:#^/])%s(}})" + def wrap(txt): + def repl(match): + return match.group(1) + txt + match.group(2) + return repl for t in m['tmpls']: for fmt in ('qfmt', 'afmt'): if newName: t[fmt] = re.sub( - pat % field['name'], "\\1%s\\2" % newName, t[fmt]) + pat % re.escape(field['name']), wrap(newName), t[fmt]) else: t[fmt] = re.sub( - pat % field['name'], "", t[fmt]) + pat % re.escape(field['name']), "", t[fmt]) field['name'] = newName self.save(m)