X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FInitScripts.py;h=18a685fc704319739c3d6365e8a58968c7a9d561;hb=afaa86e866019b80eb3524706fc19837047c2e49;hp=028293b6bef1d7b7024c2098f306afb13c47d0f1;hpb=7ba889dd89500f8c0695ef21bfda28291bb4f9da;p=plcapi.git diff --git a/PLC/InitScripts.py b/PLC/InitScripts.py index 028293b..18a685f 100644 --- a/PLC/InitScripts.py +++ b/PLC/InitScripts.py @@ -4,9 +4,7 @@ # Tony Mack # 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 @@ -29,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): @@ -47,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)