enhancement of backends configuration
This commit is contained in:
parent
85100e4c3a
commit
1fd52b7ba8
3 changed files with 31 additions and 9 deletions
|
|
@ -72,6 +72,7 @@ class WeboobCfg(ConsoleApplication):
|
||||||
params[key] = self.ask(' [%s] %s' % (key, value.description),
|
params[key] = self.ask(' [%s] %s' % (key, value.description),
|
||||||
default=value.default,
|
default=value.default,
|
||||||
masked=value.is_masked,
|
masked=value.is_masked,
|
||||||
|
choices=value.choices,
|
||||||
regexp=value.regexp)
|
regexp=value.regexp)
|
||||||
else:
|
else:
|
||||||
print ' [%s] %s: %s' % (key, value.description, '(masked)' if value.is_masked else params[key])
|
print ' [%s] %s: %s' % (key, value.description, '(masked)' if value.is_masked else params[key])
|
||||||
|
|
@ -104,9 +105,10 @@ class WeboobCfg(ConsoleApplication):
|
||||||
def command_listconfigured(self):
|
def command_listconfigured(self):
|
||||||
self.set_default_formatter('table')
|
self.set_default_formatter('table')
|
||||||
for instance_name, name, params in sorted(self.weboob.backends_config.iter_backends()):
|
for instance_name, name, params in sorted(self.weboob.backends_config.iter_backends()):
|
||||||
|
backend = self.weboob.backends_loader.get_or_load_backend(name)
|
||||||
row = OrderedDict([('Instance name', instance_name),
|
row = OrderedDict([('Instance name', instance_name),
|
||||||
('Backend name', name),
|
('Backend name', name),
|
||||||
('Configuration', ', '.join('%s=%s' % (key, value) for key, value in params.iteritems())),
|
('Configuration', ', '.join('%s=%s' % (key, ('*****' if backend.config[key].is_masked else value)) for key, value in params.iteritems())),
|
||||||
])
|
])
|
||||||
self.format(row)
|
self.format(row)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,8 @@ class DLFPBackend(BaseBackend, ICapMessages, ICapMessagesReply):
|
||||||
VERSION = '0.1'
|
VERSION = '0.1'
|
||||||
LICENSE = 'GPLv3'
|
LICENSE = 'GPLv3'
|
||||||
DESCRIPTION = "Da Linux French Page"
|
DESCRIPTION = "Da Linux French Page"
|
||||||
CONFIG = {'username': BaseBackend.ConfigField(description='Username on website'),
|
CONFIG = {'username': BaseBackend.ConfigField(description='Username on website', regexp='.+'),
|
||||||
'password': BaseBackend.ConfigField(description='Password of account', is_masked=True),
|
'password': BaseBackend.ConfigField(description='Password of account', regexp='.+', is_masked=True),
|
||||||
'get_news': BaseBackend.ConfigField(default=True, description='Get newspapers'),
|
'get_news': BaseBackend.ConfigField(default=True, description='Get newspapers'),
|
||||||
'get_telegrams': BaseBackend.ConfigField(default=False, description='Get telegrams'),
|
'get_telegrams': BaseBackend.ConfigField(default=False, description='Get telegrams'),
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@ class ConsoleApplication(BaseApplication):
|
||||||
def _get_completions(self):
|
def _get_completions(self):
|
||||||
return set(name for name, arguments, doc_string in self._commands)
|
return set(name for name, arguments, doc_string in self._commands)
|
||||||
|
|
||||||
def ask(self, question, default=None, masked=False, regexp=None):
|
def ask(self, question, default=None, masked=False, regexp=None, choices=None):
|
||||||
"""
|
"""
|
||||||
Ask a question to user.
|
Ask a question to user.
|
||||||
|
|
||||||
|
|
@ -127,19 +127,39 @@ class ConsoleApplication(BaseApplication):
|
||||||
@return entered text by user (str)
|
@return entered text by user (str)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
is_bool = False
|
||||||
|
|
||||||
|
if choices:
|
||||||
|
question = u'%s (%s)' % (question,
|
||||||
|
'/'.join([s for s in (choices.iterkeys() if isinstance(choices, dict)
|
||||||
|
else choices)]))
|
||||||
if default is not None:
|
if default is not None:
|
||||||
question = u'%s [%s]' % (question, default)
|
if isinstance(default, bool):
|
||||||
hidden_msg = u'(input chars are hidden) ' if masked else ''
|
question = u'%s (%s/%s)' % (question, 'Y' if default else 'y',
|
||||||
question = u'%s%s: ' % (hidden_msg, question)
|
'n' if default else 'N')
|
||||||
|
choices = ('y', 'n', 'Y', 'N')
|
||||||
|
default = 'y' if default else 'n'
|
||||||
|
is_bool = True
|
||||||
|
else:
|
||||||
|
question = u'%s [%s]' % (question, default)
|
||||||
|
|
||||||
|
if masked:
|
||||||
|
question = u'(input chars are hidden) %s' % question
|
||||||
|
|
||||||
|
question += ': '
|
||||||
|
|
||||||
correct = False
|
correct = False
|
||||||
while not correct:
|
while not correct:
|
||||||
line = getpass.getpass(question) if masked else raw_input(question)
|
line = getpass.getpass(question) if masked else raw_input(question)
|
||||||
if not line and default is not None:
|
if not line and default is not None:
|
||||||
line = default
|
line = default
|
||||||
correct = not regexp or re.match(regexp, unicode(line))
|
correct = (not regexp or re.match(regexp, unicode(line))) and \
|
||||||
|
(not choices or unicode(line) in [unicode(s) for s in (choices.iterkeys() if isinstance(choices, dict) else choices)])
|
||||||
|
|
||||||
return line
|
if is_bool:
|
||||||
|
return line.lower() == 'y'
|
||||||
|
else:
|
||||||
|
return line
|
||||||
|
|
||||||
def process_command(self, command=None, *args):
|
def process_command(self, command=None, *args):
|
||||||
if command is None:
|
if command is None:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue