cucchiaiata/src/cucchiaiata/configuration.py

76 lines
2.4 KiB
Python

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()