MCPcopy Create free account
hub / github.com/StackStorm/st2 / InteractiveForm

Class InteractiveForm

st2client/st2client/utils/interactive.py:411–462  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

409
410
411class InteractiveForm(object):
412 readers = [
413 EnumReader,
414 BooleanReader,
415 NumberReader,
416 IntegerReader,
417 ObjectReader,
418 ArrayEnumReader,
419 ArrayObjectReader,
420 ArrayReader,
421 SecretStringReader,
422 StringReader,
423 ]
424
425 def __init__(self, schema, prefix=None, reraise=False):
426 self.schema = schema
427 self.prefix = prefix
428 self.reraise = reraise
429
430 def initiate_dialog(self):
431 result = {}
432
433 try:
434 for field in self.schema:
435 try:
436 result[field] = self._read_field(field)
437 except ReaderNotImplemented as e:
438 print("%s. Skipping..." % six.text_type(e))
439 except DialogInterrupted:
440 if self.reraise:
441 raise
442 print("Dialog interrupted.")
443
444 return result
445
446 def _read_field(self, field):
447 spec = self.schema[field]
448
449 reader = None
450
451 for Reader in self.readers:
452 if Reader.condition(spec):
453 reader = Reader(field, spec, prefix=self.prefix)
454 break
455
456 if not reader:
457 raise ReaderNotImplemented("No reader for the field spec")
458
459 try:
460 return reader.read()
461 except KeyboardInterrupt:
462 raise DialogInterrupted()
463
464
465class Question(StringReader):

Callers 3

runMethod · 0.90
readMethod · 0.85
readMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected