support limiting to single field in find and replace

This commit is contained in:
Damien Elmes 2009-03-20 14:18:56 +09:00
parent cd44f3308b
commit 1f56bc3ec0

View file

@ -1634,15 +1634,19 @@ where id = :id""", pending)
# Find and replace # Find and replace
########################################################################## ##########################################################################
def findReplace(self, factIds, src, dst, isRe=False): def findReplace(self, factIds, src, dst, isRe=False, field=None):
"Find and replace fields in a fact."
# find # find
s = "select id, factId, value from fields where factId in %s" s = "select id, factId, value from fields where factId in %s"
if isRe: if isRe:
isRe = re.compile(src) isRe = re.compile(src)
else: else:
s += " and value like :v" s += " and value like :v"
if field:
s += " and fieldModelId = :fmid"
rows = self.s.all(s % ids2str(factIds), rows = self.s.all(s % ids2str(factIds),
v="%"+src.replace("%", "%%")+"%") v="%"+src.replace("%", "%%")+"%",
fmid=field)
modded = [] modded = []
if isRe: if isRe:
modded = [ modded = [