src/aaz_dev/cli/model/common/_fields.py (46 lines of code) (raw):
from command.model.configuration import CMDCommand, CMDClientConfig
from schematics.types import StringType, ModelType, BooleanType
from utils.config import Config
class CLIProfileNameField(StringType):
"""The stage for command group, command or argument."""
def __init__(self, *args, **kwargs):
super().__init__(
choices=tuple(Config.CLI_PROFILES),
default=Config.CLI_DEFAULT_PROFILE,
serialize_when_none=False,
*args,
**kwargs
)
class CLICommandNameField(StringType):
def __init__(self, *args, **kwargs):
super().__init__(
regex=r'^[a-z0-9]+(-[a-z0-9]+)*$',
min_length=1, *args, **kwargs)
class CLICommandConfigurationField(ModelType):
def __init__(self, *args, **kwargs):
super().__init__(
CMDCommand,
serialize_when_none=False,
)
def to_primitive(self, value, context=None):
return None # return None when value is false to hide field with `serialize_when_none=False`
class CLIVersionField(StringType):
def __init__(self, *args, **kwargs):
super(CLIVersionField, self).__init__(*args, **kwargs)
class CLIResourceIdField(StringType):
def __init__(self, *args, **kwargs):
super(CLIResourceIdField, self).__init__(
serialized_name='id',
deserialize_from='id',
*args, **kwargs
)
class CLIModifiedField(BooleanType):
def to_primitive(self, value, context=None):
# ignore modified value when using to primitive
return None
class CLIClientConfigField(ModelType):
def __init__(self, *args, **kwargs):
super().__init__(
CMDClientConfig,
serialize_when_none=False,
)
def to_primitive(self, value, context=None):
return None # return None when value is false to hide field with `serialize_when_none=False`