Loading cccli/command.py +47 −51 Original line number Diff line number Diff line Loading @@ -203,14 +203,14 @@ class RemoteCommand(OptionCommand): '''Return a set of needed remote functions''' raise NotImplementedError def print_objects(self, objectlist, index=None): def print_objects(self, objectlist): '''Trivial objectlist printing of tag''' if objectlist is None: return # get default index from local options _order = objectlist.get("order", None) for (i,o) in enumerate(objectlist["objects"]): if index or (index is None and self.options.index): if self.options.index: self.printer.out("[%s] "%i, nl="") self.print_tags(o, order=_order) Loading Loading @@ -300,82 +300,78 @@ class TqlCommand(RemoteCommand): _arg_list: list of arg which are added to args one by one (=> multiple call) ''' # set rpccall default option value _options = { "status": True, "index": False, "direct": False, "exception": False, "tql": "", "tql_index": 1, "tql_print": False, "callback": None, "arg_list": [], } # check for options modifiers for o in _options.keys(): _o = "_%s"%o if _o in kwargs: _options[o] = kwargs[_o] del kwargs[_o] elif o in dir(self.options): x = getattr(self.options, o) if x is not None: _options[o] = x # check tql index and get a copy if _options["tql_index"] < 0 or _options["tql_index"] >= len(args): # set on line modified options _saved_options = {} for _o in kwargs.copy(): if _o.startswith("_"): o = _o[1:] _saved_options[o] = getattr(self.options, o) setattr(self.options, o, kwargs[_o]) kwargs.pop(_o) # set tql_index to 1 if any if not hasattr(self.options, "tql_index"): self.options.tql_index = 1 # check tql index if self.options.tql_index < 0 or self.options.tql_index >= len(args): raise cmdError("No indexed TQL") # append filter (empty if raw mode) if self.tql_filter != "": l = list(args) l[_options["tql_index"]] += self.tql_filter l[self.options.tql_index] += self.tql_filter args = tuple(l) # Tql printer if _options["tql_print"]: self.printer.out("TQL: %s"%args[_options["tql_index"]]) if self.options.tql_print: self.printer.out("TQL: %s"%args[self.options.tql_index]) # Tql check if _options["direct"]: return self._unsecure_rpccall(_options, args, kwargs) return self._secure_rpccall(_options, args, kwargs) def _unsecure_rpccall(self, _options, args, kwargs): if self.options.direct: out= self._unsecure_rpccall(args, **kwargs) else: out = self._secure_rpccall(args, **kwargs) # restore saved options for (k, v) in _saved_options.items(): setattr(self.options, k, v) # return output return out def _unsecure_rpccall(self, args, **kwargs): '''Just call an RPC without checking before''' try: # arg_list mode call command for each argument # return is returned as a list if len(_options["arg_list"]) == 0: if not hasattr(self.options, "arg_list"): d = self.rpc.call(*args, **kwargs) if _options["callback"] is not None: _options["callback"](d) if _options["status"]: self.print_objects(d, ["output"], index=_options["index"]) if hasattr(self.options, "callback"): self.options.callback(d) if self.options.status: self.print_objects(d, ["output"]) else: # arg_list mode call command for each argument # return is returned as a list d = [] for arg in _options["arg_list"]: for arg in self.options.arg_list: args2 = args + [ arg ] r = self.rpc.call(*args2, **kwargs) d.append(r) if _options["callback"] is not None: _options["callback"](r) if _options["status"]: self.print_objects(r, ["output"], index=_options["index"]) if hasattr(self.options, "callback"): self.options.callback(r) if self.options.status: self.print_objects(r, ["output"]) return d except RpcError as e: if _options["exception"]: if self.options.exception: raise raise cmdError("RPCError: %s"%str(e)) def _secure_rpccall(self, _options, args, kwargs): def _secure_rpccall(self, args, **kwargs): '''Call RPC after listing, confirmation and with id''' # get objects id try: objs = self.cli.rpc.call("list", args[_options["tql_index"]]) objs = self.cli.rpc.call("list", args[self.options.tql_index]) except RpcError as e: raise cmdError("RPCError: %s"%str(e)) # no result, goodbye if len(objs["objects"]) == 0: raise cmdError("No selected object by TQL.") self.printer.out("Objects:") self.print_objects(objs, index=_options["index"]) self.print_objects(objs) self.printer.out("Objects count: %s"%len(objs["objects"])) # be sure boby want do that if self.printer.ask("%sProceed?%s (yes): "%(color["lred"], color["reset"])) != "yes": Loading @@ -391,6 +387,6 @@ class TqlCommand(RemoteCommand): # make a list from tupe for editing args2 = list(args) # ovewrite tql object by id from object args2[_options["tql_index"]] = "id=%s"%obj["id"] args2[self.options.tql_index] = "id=%s"%obj["id"] # now we can make call self._unsecure_rpccall(_options, args2, kwargs) self._unsecure_rpccall(args2, **kwargs) Loading
cccli/command.py +47 −51 Original line number Diff line number Diff line Loading @@ -203,14 +203,14 @@ class RemoteCommand(OptionCommand): '''Return a set of needed remote functions''' raise NotImplementedError def print_objects(self, objectlist, index=None): def print_objects(self, objectlist): '''Trivial objectlist printing of tag''' if objectlist is None: return # get default index from local options _order = objectlist.get("order", None) for (i,o) in enumerate(objectlist["objects"]): if index or (index is None and self.options.index): if self.options.index: self.printer.out("[%s] "%i, nl="") self.print_tags(o, order=_order) Loading Loading @@ -300,82 +300,78 @@ class TqlCommand(RemoteCommand): _arg_list: list of arg which are added to args one by one (=> multiple call) ''' # set rpccall default option value _options = { "status": True, "index": False, "direct": False, "exception": False, "tql": "", "tql_index": 1, "tql_print": False, "callback": None, "arg_list": [], } # check for options modifiers for o in _options.keys(): _o = "_%s"%o if _o in kwargs: _options[o] = kwargs[_o] del kwargs[_o] elif o in dir(self.options): x = getattr(self.options, o) if x is not None: _options[o] = x # check tql index and get a copy if _options["tql_index"] < 0 or _options["tql_index"] >= len(args): # set on line modified options _saved_options = {} for _o in kwargs.copy(): if _o.startswith("_"): o = _o[1:] _saved_options[o] = getattr(self.options, o) setattr(self.options, o, kwargs[_o]) kwargs.pop(_o) # set tql_index to 1 if any if not hasattr(self.options, "tql_index"): self.options.tql_index = 1 # check tql index if self.options.tql_index < 0 or self.options.tql_index >= len(args): raise cmdError("No indexed TQL") # append filter (empty if raw mode) if self.tql_filter != "": l = list(args) l[_options["tql_index"]] += self.tql_filter l[self.options.tql_index] += self.tql_filter args = tuple(l) # Tql printer if _options["tql_print"]: self.printer.out("TQL: %s"%args[_options["tql_index"]]) if self.options.tql_print: self.printer.out("TQL: %s"%args[self.options.tql_index]) # Tql check if _options["direct"]: return self._unsecure_rpccall(_options, args, kwargs) return self._secure_rpccall(_options, args, kwargs) def _unsecure_rpccall(self, _options, args, kwargs): if self.options.direct: out= self._unsecure_rpccall(args, **kwargs) else: out = self._secure_rpccall(args, **kwargs) # restore saved options for (k, v) in _saved_options.items(): setattr(self.options, k, v) # return output return out def _unsecure_rpccall(self, args, **kwargs): '''Just call an RPC without checking before''' try: # arg_list mode call command for each argument # return is returned as a list if len(_options["arg_list"]) == 0: if not hasattr(self.options, "arg_list"): d = self.rpc.call(*args, **kwargs) if _options["callback"] is not None: _options["callback"](d) if _options["status"]: self.print_objects(d, ["output"], index=_options["index"]) if hasattr(self.options, "callback"): self.options.callback(d) if self.options.status: self.print_objects(d, ["output"]) else: # arg_list mode call command for each argument # return is returned as a list d = [] for arg in _options["arg_list"]: for arg in self.options.arg_list: args2 = args + [ arg ] r = self.rpc.call(*args2, **kwargs) d.append(r) if _options["callback"] is not None: _options["callback"](r) if _options["status"]: self.print_objects(r, ["output"], index=_options["index"]) if hasattr(self.options, "callback"): self.options.callback(r) if self.options.status: self.print_objects(r, ["output"]) return d except RpcError as e: if _options["exception"]: if self.options.exception: raise raise cmdError("RPCError: %s"%str(e)) def _secure_rpccall(self, _options, args, kwargs): def _secure_rpccall(self, args, **kwargs): '''Call RPC after listing, confirmation and with id''' # get objects id try: objs = self.cli.rpc.call("list", args[_options["tql_index"]]) objs = self.cli.rpc.call("list", args[self.options.tql_index]) except RpcError as e: raise cmdError("RPCError: %s"%str(e)) # no result, goodbye if len(objs["objects"]) == 0: raise cmdError("No selected object by TQL.") self.printer.out("Objects:") self.print_objects(objs, index=_options["index"]) self.print_objects(objs) self.printer.out("Objects count: %s"%len(objs["objects"])) # be sure boby want do that if self.printer.ask("%sProceed?%s (yes): "%(color["lred"], color["reset"])) != "yes": Loading @@ -391,6 +387,6 @@ class TqlCommand(RemoteCommand): # make a list from tupe for editing args2 = list(args) # ovewrite tql object by id from object args2[_options["tql_index"]] = "id=%s"%obj["id"] args2[self.options.tql_index] = "id=%s"%obj["id"] # now we can make call self._unsecure_rpccall(_options, args2, kwargs) self._unsecure_rpccall(args2, **kwargs)