leasefilter: use f-strings instead of format()
[plcapi.git] / PLC / InitScripts.py
index 259c8c6..18a685f 100644 (file)
@@ -1,13 +1,10 @@
-# $Id#
 #
 # Functions for interacting with the initscripts table in the database
 #
 # Tony Mack <tmack@cs.princeton.edu>
 # Copyright (C) 2006 The Trustees of Princeton University
 #
-#
 
-from types import StringTypes
 from PLC.Faults import *
 from PLC.Parameter import Parameter
 from PLC.Filter import Filter
@@ -30,16 +27,16 @@ class InitScript(Row):
         }
 
     def validate_name(self, name):
-       """ 
-       validates the script name 
-       """
-       
-       conflicts = InitScripts(self.api, [name])
-       for initscript in conflicts:
-           if 'initscript_id' not in self or self['initscript_id'] != initscript['initscript_id']:
-               raise PLCInvalidArgument, "Initscript name already in use"
+        """
+        validates the script name
+        """
+
+        conflicts = InitScripts(self.api, [name])
+        for initscript in conflicts:
+            if 'initscript_id' not in self or self['initscript_id'] != initscript['initscript_id']:
+                raise PLCInvalidArgument("Initscript name already in use")
 
-       return name
+        return name
 
 
 class InitScripts(Table):
@@ -48,20 +45,28 @@ class InitScripts(Table):
     """
 
     def __init__(self, api, initscript_filter = None, columns = None):
-       Table.__init__(self, api, InitScript, columns)
+        Table.__init__(self, api, InitScript, columns)
 
         sql = "SELECT %s FROM initscripts WHERE True" % \
               ", ".join(self.columns)
 
         if initscript_filter is not None:
             if isinstance(initscript_filter, (list, tuple, set)):
-               # Separate the list into integers and strings
-                ints = filter(lambda x: isinstance(x, (int, long)), initscript_filter)
-                strs = filter(lambda x: isinstance(x, StringTypes), initscript_filter)
+                # Separate the list into integers and strings
+                ints = [x for x in initscript_filter if isinstance(x, int)]
+                strs = [x for x in initscript_filter if isinstance(x, str)]
                 initscript_filter = Filter(InitScript.fields, {'initscript_id': ints, 'name': strs })
-               sql += " AND (%s) %s" % initscript_filter.sql(api, "OR")
+                sql += " AND (%s) %s" % initscript_filter.sql(api, "OR")
             elif isinstance(initscript_filter, dict):
                 initscript_filter = Filter(InitScript.fields, initscript_filter)
-               sql += " AND (%s) %s" % initscript_filter.sql(api, "AND")
+                sql += " AND (%s) %s" % initscript_filter.sql(api, "AND")
+            elif isinstance(initscript_filter, int):
+                initscript_filter = Filter(InitScript.fields, {'initscript_id': initscript_filter})
+                sql += " AND (%s) %s" % initscript_filter.sql(api, "AND")
+            elif isinstance(initscript_filter, str):
+                initscript_filter = Filter(InitScript.fields, {'name': initscript_filter})
+                sql += " AND (%s) %s" % initscript_filter.sql(api, "AND")
+            else:
+                raise PLCInvalidArgument("Wrong initscript filter %r"%initscript_filter)
 
         self.selectall(sql)