X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=PLC%2FInitScripts.py;h=32c11d8df75ea4018be16f6fe2125ee854cd7ff3;hb=4f872c9f1e905ce3c4495cc9933631fd79ce099b;hp=028293b6bef1d7b7024c2098f306afb13c47d0f1;hpb=7ba889dd89500f8c0695ef21bfda28291bb4f9da;p=plcapi.git diff --git a/PLC/InitScripts.py b/PLC/InitScripts.py index 028293b..32c11d8 100644 --- a/PLC/InitScripts.py +++ b/PLC/InitScripts.py @@ -1,3 +1,5 @@ +# $Id$ +# $URL$ # # Functions for interacting with the initscripts table in the database # @@ -29,16 +31,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 + """ - return 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 class InitScripts(Table): @@ -47,20 +49,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 + # 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)