from sys import argv, exit from tiramisu_cmdline_parser import TiramisuCmdlineParser from tiramisu_api import Config from .i18n import _ from .parser import Parser from .common import send_data, Common class ConfigAPI(Config): def send_data(self, data): for index, payload in enumerate(data['updates']): payload['session_id'] = self.session_id if isinstance(payload['value'], list): payload['value_multi'] = payload['value'] del payload['value'] send_data(self.message, payload) self.updates = [] class Configuration(Common): def configure_server(self): version = self.message.split('.', 1)[0] url = '{}/{}/setting/{}'.format(self.cucchiaiata_config.remote_url, version, self.session_id, ) tconfig = self.remote_json_to_config(url, ConfigAPI, ) tconfig.message = self.message tconfig.session_id = self.session_id return tconfig def get_parameters(self): parameters = argv.copy() # get and remove session.xxxxx.configure self.message = parameters.pop(1) # get and remove commandline name self.prog = parameters.pop(0) # get and remove sessionid try: index = parameters.index('-s') except ValueError: try: index = parameters.index('--session_id') except ValueError: parser = Parser() parser.print_help() exit(1) parameters.pop(index) self.session_id = parameters.pop(index) return parameters def get(self): parameters = self.get_parameters() tiramisu_config = self.configure_server() option = next(tiramisu_config.option.list('all')) namespace = option.option.path().split('.', 1)[0] parser = TiramisuCmdlineParser(tiramisu_config, self.prog, root=namespace, unrestraint=True, fullpath=True) parser.parse_args(parameters, valid_mandatory=False) tiramisu_config.send()