X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FFilter.py;h=9f5fb42befcbfc5e1fadb275fad6548fb31fdc10;hb=1b3d12ae639bed26d9de0b02d4b4a80c2bea6803;hp=139da5804bd2be6d2a5601dbdc1c9ea418aa585f;hpb=7abe61ddbeb47ced44f58073bb1a9af5a7adc31c;p=plcapi.git diff --git a/PLC/Filter.py b/PLC/Filter.py index 139da58..9f5fb42 100644 --- a/PLC/Filter.py +++ b/PLC/Filter.py @@ -1,3 +1,10 @@ +from types import StringTypes +try: + set +except NameError: + from sets import Set + set = Set + from PLC.Faults import * from PLC.Parameter import Parameter, Mixed, python_type @@ -55,9 +62,9 @@ class Filter(Parameter, dict): for field, value in self.iteritems(): # provide for negation with a field starting with ~ negation=False - if field[0]=='~': - negation=True - field=field[1:] + if field[0] == '~': + negation = True + field = field[1:] if field not in self.fields: raise PLCInvalidArgument, "Invalid filter field '%s'" % field @@ -74,7 +81,11 @@ class Filter(Parameter, dict): if value is None: operator = "IS" value = "NULL" - else: + elif isinstance(value, StringTypes) and \ + (value.find("*") > -1 or value.find("%") > -1): + operator = "LIKE" + value = str(api.db.quote(value.replace("*", "%"))) + else: operator = "=" value = str(api.db.quote(value))