#2490 : Migration : register new arg values on custom_filter.xml

svn: r11857
This commit is contained in:
Benny Malengier 2009-02-04 21:37:15 +00:00
parent f864a324ac
commit 0b59dad73b
3 changed files with 27 additions and 8 deletions

View File

@ -46,6 +46,14 @@ class HasNoteBase(Rule):
description = _("Matches objects that have a certain number of notes") description = _("Matches objects that have a certain number of notes")
category = _('General filters') category = _('General filters')
def __init__(self, arg):
# Upgrade from pre 3.1 HasNote filter, use defaults that correspond
# Previous filter had 0 arguments
if len(arg) == 0:
Rule.__init__(self, ["0", 'greater than'])
else:
Rule.__init__(self, arg)
def prepare(self, db): def prepare(self, db):
# things we want to do just once, not for every handle # things we want to do just once, not for every handle
if self.list[1] == _('lesser than'): if self.list[1] == _('lesser than'):

View File

@ -55,8 +55,9 @@ class Rule:
def set_list(self, arg): def set_list(self, arg):
assert isinstance(arg, list) or arg is None, "Argument is not a list" assert isinstance(arg, list) or arg is None, "Argument is not a list"
assert len(arg) == len(self.labels), \ assert len(arg) == len(self.labels), \
"Number of arguments does not match number of labels.\n"\ "ERROR: Number of arguments does not match number of labels.\n"\
"list: %s\nlabels: %s" % (arg,self.labels) " list: %s\n"\
" labels: %s" % (arg,self.labels)
self.list = arg self.list = arg
def values(self): def values(self):

View File

@ -108,16 +108,26 @@ class FilterParser(handler.ContentHandler):
def endElement(self, tag): def endElement(self, tag):
if tag == "rule" and self.r is not None: if tag == "rule" and self.r is not None:
if len(self.r.labels) < len(self.a): if len(self.r.labels) < len(self.a):
print "WARNING: Invalid number of arguments in filter '%s'!" %\ print _("WARNING: To many arguments in filter '%s'!\n"\
"Trying to load with subset of arguments.") %\
self.f.get_name() self.f.get_name()
nargs = len(self.r.labels) nargs = len(self.r.labels)
rule = self.r(self.a[0:nargs]) rule = self.r(self.a[0:nargs])
self.f.add_rule(rule) self.f.add_rule(rule)
elif len(self.r.labels) > len(self.a):
print "ERROR: Invalid number of arguments in filter '%s'!" % \
self.f.get_name()
else: else:
if len(self.r.labels) > len(self.a):
print _("WARNING: To few arguments in filter '%s'!\n" \
" Trying to load anyway in the hope this "\
"will be upgraded.") %\
self.f.get_name()
try:
rule = self.r(self.a) rule = self.r(self.a)
except AssertionError, msg:
print msg
print _("ERROR: filter %s could not be correctly loaded. "
"Edit the filter!") % self.f.get_name()
return
self.f.add_rule(rule) self.f.add_rule(rule)
def characters(self, data): def characters(self, data):