strip HTML when calculating field checksum (users will need to checkDB)

This commit is contained in:
Damien Elmes 2012-12-21 20:43:55 +09:00
parent f6ff63eeb8
commit 2095e5c4b3
3 changed files with 4 additions and 4 deletions

View file

@ -4,7 +4,7 @@
import copy, re import copy, re
from anki.utils import intTime, hexifyID, joinFields, splitFields, ids2str, \ from anki.utils import intTime, hexifyID, joinFields, splitFields, ids2str, \
timestampID, fieldChecksum, json timestampID, checksum, json
from anki.lang import _ from anki.lang import _
from anki.consts import * from anki.consts import *
from anki.hooks import runHook from anki.hooks import runHook
@ -456,7 +456,7 @@ select id from notes where mid = ?)""" % " ".join(map),
s += t['name'] s += t['name']
s += t['qfmt'] s += t['qfmt']
s += t['afmt'] s += t['afmt']
return fieldChecksum(s) return checksum(s)
# Required field/text cache # Required field/text cache
########################################################################## ##########################################################################

View file

@ -136,7 +136,7 @@ insert or replace into notes values (?,?,?,?,?,?,?,?,?,?,?)""",
for flds in self.col.db.list( for flds in self.col.db.list(
"select flds from notes where csum = ? and id != ? and mid = ?", "select flds from notes where csum = ? and id != ? and mid = ?",
csum, self.id or 0, self.mid): csum, self.id or 0, self.mid):
if splitFields(flds)[0] == self.fields[0]: if stripHTML(splitFields(flds)[0]) == stripHTML(self.fields[0]):
return 2 return 2
return False return False

View file

@ -245,7 +245,7 @@ def checksum(data):
def fieldChecksum(data): def fieldChecksum(data):
# 32 bit unsigned number from first 8 digits of sha1 hash # 32 bit unsigned number from first 8 digits of sha1 hash
return int(checksum(data.encode("utf-8"))[:8], 16) return int(checksum(stripHTML(data).encode("utf-8"))[:8], 16)
# Temp files # Temp files
############################################################################## ##############################################################################