X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FInitScripts.py;h=c248c83c5c2f9c993c660e131b68ba529cd985e4;hb=9aecb8c6fde06136bef94e2fd6fce832dc3c0c10;hp=9f864d2a7f97b9c0ad5e7b2ed40f3b6d1ea6cc6f;hpb=4604006f235246d8480da96e488c0c7fd6a09c91;p=plcapi.git diff --git a/PLC/InitScripts.py b/PLC/InitScripts.py index 9f864d2..c248c83 100644 --- a/PLC/InitScripts.py +++ b/PLC/InitScripts.py @@ -4,7 +4,6 @@ # Tony Mack # Copyright (C) 2006 The Trustees of Princeton University # -# from types import StringTypes from PLC.Faults import * @@ -29,38 +28,46 @@ 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): """ - Representation of the initscipts table in the database. + Representation of the initscripts table in the database. """ 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 + # 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) 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, long)): + initscript_filter = Filter(InitScript.fields, {'initscript_id': initscript_filter}) + sql += " AND (%s) %s" % initscript_filter.sql(api, "AND") + elif isinstance(initscript_filter, StringTypes): + 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)