minimal hacks so that the PHP bindings can be built under FC2
[plcapi.git] / PLC / Filter.py
index 139da58..9f5fb42 100644 (file)
@@ -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))