forked from shaba/openuds
Refactorizing gui variables - types
This commit is contained in:
parent
f7888468c0
commit
c6dfd3f362
@ -115,7 +115,7 @@ class Authenticators(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'Access type for this transport. Disabled means not only hidden, but also not usable as login method.'
|
'Access type for this transport. Disabled means not only hidden, but also not usable as login method.'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.CHOICE_TYPE,
|
'type': gui.InputField.Types.CHOICE,
|
||||||
'order': 107,
|
'order': 107,
|
||||||
'tab': gettext('Display'),
|
'tab': gettext('Display'),
|
||||||
},
|
},
|
||||||
@ -137,7 +137,7 @@ class Authenticators(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'MFA provider to use for this authenticator'
|
'MFA provider to use for this authenticator'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.CHOICE_TYPE,
|
'type': gui.InputField.Types.CHOICE,
|
||||||
'order': 108,
|
'order': 108,
|
||||||
'tab': gui.Tab.MFA,
|
'tab': gui.Tab.MFA,
|
||||||
},
|
},
|
||||||
|
@ -85,7 +85,7 @@ class Images(ModelHandler):
|
|||||||
'value': '',
|
'value': '',
|
||||||
'label': gettext('Image'),
|
'label': gettext('Image'),
|
||||||
'tooltip': gettext('Image object'),
|
'tooltip': gettext('Image object'),
|
||||||
'type': gui.InputField.IMAGECHOICE_TYPE,
|
'type': gui.InputField.Types.IMAGECHOICE,
|
||||||
'order': 100, # At end
|
'order': 100, # At end
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
@ -155,7 +155,7 @@ class MetaPools(ModelHandler):
|
|||||||
],
|
],
|
||||||
'label': gettext('Policy'),
|
'label': gettext('Policy'),
|
||||||
'tooltip': gettext('Service pool policy'),
|
'tooltip': gettext('Service pool policy'),
|
||||||
'type': gui.InputField.CHOICE_TYPE,
|
'type': gui.InputField.Types.CHOICE,
|
||||||
'order': 100,
|
'order': 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -165,7 +165,7 @@ class MetaPools(ModelHandler):
|
|||||||
],
|
],
|
||||||
'label': gettext('HA Policy'),
|
'label': gettext('HA Policy'),
|
||||||
'tooltip': gettext('Service pool HA policy. Enable with care!'),
|
'tooltip': gettext('Service pool HA policy. Enable with care!'),
|
||||||
'type': gui.InputField.CHOICE_TYPE,
|
'type': gui.InputField.Types.CHOICE,
|
||||||
'order': 101,
|
'order': 101,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -179,7 +179,7 @@ class MetaPools(ModelHandler):
|
|||||||
),
|
),
|
||||||
'label': gettext('Associated Image'),
|
'label': gettext('Associated Image'),
|
||||||
'tooltip': gettext('Image assocciated with this service'),
|
'tooltip': gettext('Image assocciated with this service'),
|
||||||
'type': gui.InputField.IMAGECHOICE_TYPE,
|
'type': gui.InputField.Types.IMAGECHOICE,
|
||||||
'order': 120,
|
'order': 120,
|
||||||
'tab': gui.Tab.DISPLAY,
|
'tab': gui.Tab.DISPLAY,
|
||||||
},
|
},
|
||||||
@ -196,7 +196,7 @@ class MetaPools(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'Pool group for this pool (for pool classify on display)'
|
'Pool group for this pool (for pool classify on display)'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.IMAGECHOICE_TYPE,
|
'type': gui.InputField.Types.IMAGECHOICE,
|
||||||
'order': 121,
|
'order': 121,
|
||||||
'tab': gui.Tab.DISPLAY,
|
'tab': gui.Tab.DISPLAY,
|
||||||
},
|
},
|
||||||
@ -205,7 +205,7 @@ class MetaPools(ModelHandler):
|
|||||||
'value': True,
|
'value': True,
|
||||||
'label': gettext('Visible'),
|
'label': gettext('Visible'),
|
||||||
'tooltip': gettext('If active, metapool will be visible for users'),
|
'tooltip': gettext('If active, metapool will be visible for users'),
|
||||||
'type': gui.InputField.CHECKBOX_TYPE,
|
'type': gui.InputField.Types.CHECKBOX,
|
||||||
'order': 123,
|
'order': 123,
|
||||||
'tab': gui.Tab.DISPLAY,
|
'tab': gui.Tab.DISPLAY,
|
||||||
},
|
},
|
||||||
@ -216,7 +216,7 @@ class MetaPools(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'Custom message to be shown to users if access is limited by calendar rules.'
|
'Custom message to be shown to users if access is limited by calendar rules.'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.TEXT_TYPE,
|
'type': gui.InputField.Types.TEXT,
|
||||||
'order': 124,
|
'order': 124,
|
||||||
'tab': gui.Tab.DISPLAY,
|
'tab': gui.Tab.DISPLAY,
|
||||||
},
|
},
|
||||||
@ -228,7 +228,7 @@ class MetaPools(ModelHandler):
|
|||||||
],
|
],
|
||||||
'label': gettext('Transport Selection'),
|
'label': gettext('Transport Selection'),
|
||||||
'tooltip': gettext('Transport selection policy'),
|
'tooltip': gettext('Transport selection policy'),
|
||||||
'type': gui.InputField.CHOICE_TYPE,
|
'type': gui.InputField.Types.CHOICE,
|
||||||
'order': 125,
|
'order': 125,
|
||||||
'tab': gui.Tab.DISPLAY,
|
'tab': gui.Tab.DISPLAY,
|
||||||
},
|
},
|
||||||
|
@ -81,7 +81,7 @@ class MFA(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'Time in hours to cache device so MFA is not required again. User based.'
|
'Time in hours to cache device so MFA is not required again. User based.'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.NUMERIC_TYPE,
|
'type': gui.InputField.Types.NUMERIC,
|
||||||
'order': 111,
|
'order': 111,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
@ -95,7 +95,7 @@ class MFA(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'Time in minutes to allow MFA code to be used.'
|
'Time in minutes to allow MFA code to be used.'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.NUMERIC_TYPE,
|
'type': gui.InputField.Types.NUMERIC,
|
||||||
'order': 112,
|
'order': 112,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ class Networks(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'Network range. Accepts most network definitions formats (range, subnet, host, etc...'
|
'Network range. Accepts most network definitions formats (range, subnet, host, etc...'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.TEXT_TYPE,
|
'type': gui.InputField.Types.TEXT,
|
||||||
'order': 100, # At end
|
'order': 100, # At end
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
@ -86,7 +86,7 @@ class Notifiers(ModelHandler):
|
|||||||
'values': [gui.choiceItem(i[0], i[1]) for i in NotificationLevel.all()],
|
'values': [gui.choiceItem(i[0], i[1]) for i in NotificationLevel.all()],
|
||||||
'label': gettext('Level'),
|
'label': gettext('Level'),
|
||||||
'tooltip': gettext('Level of notifications'),
|
'tooltip': gettext('Level of notifications'),
|
||||||
'type': gui.InputField.CHOICE_TYPE,
|
'type': gui.InputField.Types.CHOICE,
|
||||||
'order': 102,
|
'order': 102,
|
||||||
}
|
}
|
||||||
]:
|
]:
|
||||||
|
@ -302,7 +302,7 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods
|
|||||||
'tooltip': _(
|
'tooltip': _(
|
||||||
'Kind of service counting for calculating if MAX is reached'
|
'Kind of service counting for calculating if MAX is reached'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.CHOICE_TYPE,
|
'type': gui.InputField.Types.CHOICE,
|
||||||
'rdonly': False,
|
'rdonly': False,
|
||||||
'order': 101,
|
'order': 101,
|
||||||
},
|
},
|
||||||
|
@ -99,7 +99,7 @@ class ServicesPoolGroups(ModelHandler):
|
|||||||
),
|
),
|
||||||
'label': gettext('Associated Image'),
|
'label': gettext('Associated Image'),
|
||||||
'tooltip': gettext('Image assocciated with this service'),
|
'tooltip': gettext('Image assocciated with this service'),
|
||||||
'type': gui.InputField.IMAGECHOICE_TYPE,
|
'type': gui.InputField.Types.IMAGECHOICE,
|
||||||
'order': 102,
|
'order': 102,
|
||||||
}
|
}
|
||||||
]:
|
]:
|
||||||
|
@ -331,7 +331,7 @@ class ServicesPools(ModelHandler):
|
|||||||
),
|
),
|
||||||
'label': gettext('Base service'),
|
'label': gettext('Base service'),
|
||||||
'tooltip': gettext('Service used as base of this service pool'),
|
'tooltip': gettext('Service used as base of this service pool'),
|
||||||
'type': gui.InputField.CHOICE_TYPE,
|
'type': gui.InputField.Types.CHOICE,
|
||||||
'rdonly': True,
|
'rdonly': True,
|
||||||
'order': 100, # Ensures is At end
|
'order': 100, # Ensures is At end
|
||||||
},
|
},
|
||||||
@ -343,7 +343,7 @@ class ServicesPools(ModelHandler):
|
|||||||
),
|
),
|
||||||
'label': gettext('OS Manager'),
|
'label': gettext('OS Manager'),
|
||||||
'tooltip': gettext('OS Manager used as base of this service pool'),
|
'tooltip': gettext('OS Manager used as base of this service pool'),
|
||||||
'type': gui.InputField.CHOICE_TYPE,
|
'type': gui.InputField.Types.CHOICE,
|
||||||
'rdonly': True,
|
'rdonly': True,
|
||||||
'order': 101,
|
'order': 101,
|
||||||
},
|
},
|
||||||
@ -354,7 +354,7 @@ class ServicesPools(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'If active, the user will be allowed to remove the service "manually". Be careful with this, because the user will have the "power" to delete it\'s own service'
|
'If active, the user will be allowed to remove the service "manually". Be careful with this, because the user will have the "power" to delete it\'s own service'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.CHECKBOX_TYPE,
|
'type': gui.InputField.Types.CHECKBOX,
|
||||||
'order': 111,
|
'order': 111,
|
||||||
'tab': gettext('Advanced'),
|
'tab': gettext('Advanced'),
|
||||||
},
|
},
|
||||||
@ -365,7 +365,7 @@ class ServicesPools(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'If active, the user will be allowed to reset the service'
|
'If active, the user will be allowed to reset the service'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.CHECKBOX_TYPE,
|
'type': gui.InputField.Types.CHECKBOX,
|
||||||
'order': 112,
|
'order': 112,
|
||||||
'tab': gettext('Advanced'),
|
'tab': gettext('Advanced'),
|
||||||
},
|
},
|
||||||
@ -376,7 +376,7 @@ class ServicesPools(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'If the option is enabled, UDS will not attempt to detect and remove the user services assigned but not in use.'
|
'If the option is enabled, UDS will not attempt to detect and remove the user services assigned but not in use.'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.CHECKBOX_TYPE,
|
'type': gui.InputField.Types.CHECKBOX,
|
||||||
'order': 113,
|
'order': 113,
|
||||||
'tab': gettext('Advanced'),
|
'tab': gettext('Advanced'),
|
||||||
},
|
},
|
||||||
@ -385,7 +385,7 @@ class ServicesPools(ModelHandler):
|
|||||||
'value': True,
|
'value': True,
|
||||||
'label': gettext('Visible'),
|
'label': gettext('Visible'),
|
||||||
'tooltip': gettext('If active, transport will be visible for users'),
|
'tooltip': gettext('If active, transport will be visible for users'),
|
||||||
'type': gui.InputField.CHECKBOX_TYPE,
|
'type': gui.InputField.Types.CHECKBOX,
|
||||||
'order': 107,
|
'order': 107,
|
||||||
'tab': gettext('Display'),
|
'tab': gettext('Display'),
|
||||||
},
|
},
|
||||||
@ -400,7 +400,7 @@ class ServicesPools(ModelHandler):
|
|||||||
),
|
),
|
||||||
'label': gettext('Associated Image'),
|
'label': gettext('Associated Image'),
|
||||||
'tooltip': gettext('Image assocciated with this service'),
|
'tooltip': gettext('Image assocciated with this service'),
|
||||||
'type': gui.InputField.IMAGECHOICE_TYPE,
|
'type': gui.InputField.Types.IMAGECHOICE,
|
||||||
'order': 120,
|
'order': 120,
|
||||||
'tab': gettext('Display'),
|
'tab': gettext('Display'),
|
||||||
},
|
},
|
||||||
@ -417,7 +417,7 @@ class ServicesPools(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'Pool group for this pool (for pool classify on display)'
|
'Pool group for this pool (for pool classify on display)'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.IMAGECHOICE_TYPE,
|
'type': gui.InputField.Types.IMAGECHOICE,
|
||||||
'order': 121,
|
'order': 121,
|
||||||
'tab': gettext('Display'),
|
'tab': gettext('Display'),
|
||||||
},
|
},
|
||||||
@ -428,7 +428,7 @@ class ServicesPools(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'Custom message to be shown to users if access is limited by calendar rules.'
|
'Custom message to be shown to users if access is limited by calendar rules.'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.TEXT_TYPE,
|
'type': gui.InputField.Types.TEXT,
|
||||||
'order': 122,
|
'order': 122,
|
||||||
'tab': gettext('Display'),
|
'tab': gettext('Display'),
|
||||||
},
|
},
|
||||||
@ -438,7 +438,7 @@ class ServicesPools(ModelHandler):
|
|||||||
'minValue': '0',
|
'minValue': '0',
|
||||||
'label': gettext('Initial available services'),
|
'label': gettext('Initial available services'),
|
||||||
'tooltip': gettext('Services created initially for this service pool'),
|
'tooltip': gettext('Services created initially for this service pool'),
|
||||||
'type': gui.InputField.NUMERIC_TYPE,
|
'type': gui.InputField.Types.NUMERIC,
|
||||||
'order': 130,
|
'order': 130,
|
||||||
'tab': gettext('Availability'),
|
'tab': gettext('Availability'),
|
||||||
},
|
},
|
||||||
@ -450,7 +450,7 @@ class ServicesPools(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'Services kept in cache for improved user service assignation'
|
'Services kept in cache for improved user service assignation'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.NUMERIC_TYPE,
|
'type': gui.InputField.Types.NUMERIC,
|
||||||
'order': 131,
|
'order': 131,
|
||||||
'tab': gettext('Availability'),
|
'tab': gettext('Availability'),
|
||||||
},
|
},
|
||||||
@ -462,7 +462,7 @@ class ServicesPools(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'Services kept in cache of level2 for improved service generation'
|
'Services kept in cache of level2 for improved service generation'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.NUMERIC_TYPE,
|
'type': gui.InputField.Types.NUMERIC,
|
||||||
'order': 132,
|
'order': 132,
|
||||||
'tab': gettext('Availability'),
|
'tab': gettext('Availability'),
|
||||||
},
|
},
|
||||||
@ -474,7 +474,7 @@ class ServicesPools(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'Maximum number of service (assigned and L1 cache) that can be created for this service'
|
'Maximum number of service (assigned and L1 cache) that can be created for this service'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.NUMERIC_TYPE,
|
'type': gui.InputField.Types.NUMERIC,
|
||||||
'order': 133,
|
'order': 133,
|
||||||
'tab': gettext('Availability'),
|
'tab': gettext('Availability'),
|
||||||
},
|
},
|
||||||
@ -485,7 +485,7 @@ class ServicesPools(ModelHandler):
|
|||||||
'tooltip': gettext(
|
'tooltip': gettext(
|
||||||
'If active, alternative transports for user will be shown'
|
'If active, alternative transports for user will be shown'
|
||||||
),
|
),
|
||||||
'type': gui.InputField.CHECKBOX_TYPE,
|
'type': gui.InputField.Types.CHECKBOX,
|
||||||
'tab': gettext('Advanced'),
|
'tab': gettext('Advanced'),
|
||||||
'order': 130,
|
'order': 130,
|
||||||
},
|
},
|
||||||
@ -497,7 +497,7 @@ class ServicesPools(ModelHandler):
|
|||||||
),
|
),
|
||||||
'label': gettext('Accounting'),
|
'label': gettext('Accounting'),
|
||||||
'tooltip': gettext('Account associated to this service pool'),
|
'tooltip': gettext('Account associated to this service pool'),
|
||||||
'type': gui.InputField.CHOICE_TYPE,
|
'type': gui.InputField.Types.CHOICE,
|
||||||
'tab': gettext('Advanced'),
|
'tab': gettext('Advanced'),
|
||||||
'order': 131,
|
'order': 131,
|
||||||
},
|
},
|
||||||
@ -624,8 +624,8 @@ class ServicesPools(ModelHandler):
|
|||||||
if self._params.get('publish_on_save', False) is True:
|
if self._params.get('publish_on_save', False) is True:
|
||||||
try:
|
try:
|
||||||
item.publish()
|
item.publish()
|
||||||
except Exception:
|
except Exception as e:
|
||||||
pass
|
logger.error('Could not publish service pool %s: %s',item.name, e)
|
||||||
|
|
||||||
def deleteItem(self, item: ServicePool) -> None:
|
def deleteItem(self, item: ServicePool) -> None:
|
||||||
try:
|
try:
|
||||||
|
@ -109,7 +109,7 @@ class BaseModelHandler(Handler):
|
|||||||
'multiline': field.get('multiline', 0),
|
'multiline': field.get('multiline', 0),
|
||||||
'tooltip': field.get('tooltip', ''),
|
'tooltip': field.get('tooltip', ''),
|
||||||
'rdonly': field.get('rdonly', False),
|
'rdonly': field.get('rdonly', False),
|
||||||
'type': field.get('type', uiGui.InputField.TEXT_TYPE),
|
'type': str(field.get('type', uiGui.InputField.Types.TEXT)),
|
||||||
'order': field.get('order', 0),
|
'order': field.get('order', 0),
|
||||||
'values': field.get('values', []),
|
'values': field.get('values', []),
|
||||||
},
|
},
|
||||||
|
@ -285,20 +285,24 @@ class gui:
|
|||||||
so if you use both, the used one will be "value". This is valid for
|
so if you use both, the used one will be "value". This is valid for
|
||||||
all form fields.
|
all form fields.
|
||||||
"""
|
"""
|
||||||
|
class Types(enum.Enum):
|
||||||
|
TEXT = 'text'
|
||||||
|
TEXT_AUTOCOMPLETE = 'text-autocomplete'
|
||||||
|
# TEXTBOX = 'textbox'
|
||||||
|
NUMERIC = 'numeric'
|
||||||
|
PASSWORD = 'password' # nosec: this is not a password
|
||||||
|
HIDDEN = 'hidden'
|
||||||
|
CHOICE = 'choice'
|
||||||
|
MULTI_CHOICE = 'multichoice'
|
||||||
|
EDITABLE_LIST = 'editlist'
|
||||||
|
CHECKBOX = 'checkbox'
|
||||||
|
IMAGECHOICE = 'imgchoice'
|
||||||
|
DATE = 'date'
|
||||||
|
INFO = 'dummy'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.value
|
||||||
|
|
||||||
TEXT_TYPE: typing.ClassVar[str] = 'text'
|
|
||||||
TEXT_AUTOCOMPLETE_TYPE: typing.ClassVar[str] = 'text-autocomplete'
|
|
||||||
TEXTBOX_TYPE: typing.ClassVar[str] = 'textbox'
|
|
||||||
NUMERIC_TYPE: typing.ClassVar[str] = 'numeric'
|
|
||||||
PASSWORD_TYPE: typing.ClassVar[str] = 'password'
|
|
||||||
HIDDEN_TYPE: typing.ClassVar[str] = 'hidden'
|
|
||||||
CHOICE_TYPE: typing.ClassVar[str] = 'choice'
|
|
||||||
MULTI_CHOICE_TYPE: typing.ClassVar[str] = 'multichoice'
|
|
||||||
EDITABLE_LIST: typing.ClassVar[str] = 'editlist'
|
|
||||||
CHECKBOX_TYPE: typing.ClassVar[str] = 'checkbox'
|
|
||||||
IMAGECHOICE_TYPE: typing.ClassVar[str] = 'imgchoice'
|
|
||||||
DATE_TYPE: typing.ClassVar[str] = 'date'
|
|
||||||
INFO_TYPE: typing.ClassVar[str] = 'dummy'
|
|
||||||
# : If length of some fields are not especified, this value is used as default
|
# : If length of some fields are not especified, this value is used as default
|
||||||
DEFAULT_LENTGH: typing.ClassVar[int] = 64
|
DEFAULT_LENTGH: typing.ClassVar[int] = 64
|
||||||
|
|
||||||
@ -321,26 +325,26 @@ class gui:
|
|||||||
), # This property only affects in "modify" operations
|
), # This property only affects in "modify" operations
|
||||||
'order': options.get('order', 0),
|
'order': options.get('order', 0),
|
||||||
'tooltip': options.get('tooltip', ''),
|
'tooltip': options.get('tooltip', ''),
|
||||||
'type': gui.InputField.TEXT_TYPE,
|
'type': str(gui.InputField.Types.TEXT),
|
||||||
'value': options.get('value', ''),
|
'value': options.get('value', ''),
|
||||||
}
|
}
|
||||||
if 'tab' in options:
|
if 'tab' in options:
|
||||||
self._data['tab'] = str(options.get('tab')) # Ensure it's a string
|
self._data['tab'] = str(options.get('tab')) # Ensure it's a string
|
||||||
|
|
||||||
def _type(self, type_: str) -> None:
|
def _type(self, type_: typing.Union[Types, str]) -> None:
|
||||||
"""
|
"""
|
||||||
Sets the type of this field.
|
Sets the type of this field.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
type: Type to set (from constants of this class)
|
type: Type to set (from constants of this class)
|
||||||
"""
|
"""
|
||||||
self._data['type'] = type_
|
self._data['type'] = str(type_)
|
||||||
|
|
||||||
def isType(self, type_: str) -> bool:
|
def isType(self, type_: typing.Union[Types, str]) -> bool:
|
||||||
"""
|
"""
|
||||||
Returns true if this field is of specified type
|
Returns true if this field is of specified type
|
||||||
"""
|
"""
|
||||||
return self._data['type'] == type_
|
return self._data['type'] == str(type_)
|
||||||
|
|
||||||
def isSerializable(self) -> bool:
|
def isSerializable(self) -> bool:
|
||||||
return True
|
return True
|
||||||
@ -450,7 +454,7 @@ class gui:
|
|||||||
|
|
||||||
def __init__(self, **options) -> None:
|
def __init__(self, **options) -> None:
|
||||||
super().__init__(**options)
|
super().__init__(**options)
|
||||||
self._type(gui.InputField.TEXT_TYPE)
|
self._type(gui.InputField.Types.TEXT)
|
||||||
multiline = int(options.get('multiline', 0))
|
multiline = int(options.get('multiline', 0))
|
||||||
if multiline > 8:
|
if multiline > 8:
|
||||||
multiline = 8
|
multiline = 8
|
||||||
@ -468,7 +472,7 @@ class gui:
|
|||||||
def __init__(self, **options) -> None:
|
def __init__(self, **options) -> None:
|
||||||
super().__init__(**options)
|
super().__init__(**options)
|
||||||
# Change the type
|
# Change the type
|
||||||
self._type(gui.InputField.TEXT_AUTOCOMPLETE_TYPE)
|
self._type(gui.InputField.Types.TEXT_AUTOCOMPLETE)
|
||||||
# And store values in a list
|
# And store values in a list
|
||||||
self._data['values'] = gui.convertToChoices(options.get('values', []))
|
self._data['values'] = gui.convertToChoices(options.get('values', []))
|
||||||
|
|
||||||
@ -508,7 +512,7 @@ class gui:
|
|||||||
options.get('maxValue', options.get('maxvalue', '987654321'))
|
options.get('maxValue', options.get('maxvalue', '987654321'))
|
||||||
)
|
)
|
||||||
|
|
||||||
self._type(gui.InputField.NUMERIC_TYPE)
|
self._type(gui.InputField.Types.NUMERIC)
|
||||||
|
|
||||||
def _setValue(self, value: typing.Any):
|
def _setValue(self, value: typing.Any):
|
||||||
# Internally stores an string
|
# Internally stores an string
|
||||||
@ -568,7 +572,7 @@ class gui:
|
|||||||
self.processValue(v, options)
|
self.processValue(v, options)
|
||||||
|
|
||||||
super().__init__(**options)
|
super().__init__(**options)
|
||||||
self._type(gui.InputField.DATE_TYPE)
|
self._type(gui.InputField.Types.DATE)
|
||||||
|
|
||||||
def date(self, min: bool = True) -> datetime.date:
|
def date(self, min: bool = True) -> datetime.date:
|
||||||
"""
|
"""
|
||||||
@ -635,7 +639,7 @@ class gui:
|
|||||||
|
|
||||||
def __init__(self, **options):
|
def __init__(self, **options):
|
||||||
super().__init__(**options)
|
super().__init__(**options)
|
||||||
self._type(gui.InputField.PASSWORD_TYPE)
|
self._type(gui.InputField.Types.PASSWORD)
|
||||||
|
|
||||||
def cleanStr(self):
|
def cleanStr(self):
|
||||||
return str(self.value).strip()
|
return str(self.value).strip()
|
||||||
@ -675,7 +679,7 @@ class gui:
|
|||||||
def __init__(self, **options):
|
def __init__(self, **options):
|
||||||
super().__init__(**options)
|
super().__init__(**options)
|
||||||
self._isSerializable: bool = options.get('serializable', '') != ''
|
self._isSerializable: bool = options.get('serializable', '') != ''
|
||||||
self._type(gui.InputField.HIDDEN_TYPE)
|
self._type(gui.InputField.Types.HIDDEN)
|
||||||
|
|
||||||
def isSerializable(self) -> bool:
|
def isSerializable(self) -> bool:
|
||||||
return self._isSerializable
|
return self._isSerializable
|
||||||
@ -701,7 +705,7 @@ class gui:
|
|||||||
|
|
||||||
def __init__(self, **options):
|
def __init__(self, **options):
|
||||||
super().__init__(**options)
|
super().__init__(**options)
|
||||||
self._type(gui.InputField.CHECKBOX_TYPE)
|
self._type(gui.InputField.Types.CHECKBOX)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _checkTrue(val: typing.Union[str, bytes, bool]) -> bool:
|
def _checkTrue(val: typing.Union[str, bytes, bool]) -> bool:
|
||||||
@ -832,7 +836,7 @@ class gui:
|
|||||||
fills.pop('function')
|
fills.pop('function')
|
||||||
self._data['fills'] = fills
|
self._data['fills'] = fills
|
||||||
gui.callbacks[fills['callbackName']] = fnc
|
gui.callbacks[fills['callbackName']] = fnc
|
||||||
self._type(gui.InputField.CHOICE_TYPE)
|
self._type(gui.InputField.Types.CHOICE)
|
||||||
|
|
||||||
def setValues(self, values: typing.List[typing.Dict[str, typing.Any]]):
|
def setValues(self, values: typing.List[typing.Dict[str, typing.Any]]):
|
||||||
"""
|
"""
|
||||||
@ -845,7 +849,7 @@ class gui:
|
|||||||
super().__init__(**options)
|
super().__init__(**options)
|
||||||
self._data['values'] = options.get('values', [])
|
self._data['values'] = options.get('values', [])
|
||||||
|
|
||||||
self._type(gui.InputField.IMAGECHOICE_TYPE)
|
self._type(gui.InputField.Types.IMAGECHOICE)
|
||||||
|
|
||||||
def setValues(self, values: typing.List[typing.Any]):
|
def setValues(self, values: typing.List[typing.Any]):
|
||||||
"""
|
"""
|
||||||
@ -893,7 +897,7 @@ class gui:
|
|||||||
options['values'] = gui.convertToChoices(options['values'])
|
options['values'] = gui.convertToChoices(options['values'])
|
||||||
self._data['values'] = options.get('values', [])
|
self._data['values'] = options.get('values', [])
|
||||||
self._data['rows'] = options.get('rows', -1)
|
self._data['rows'] = options.get('rows', -1)
|
||||||
self._type(gui.InputField.MULTI_CHOICE_TYPE)
|
self._type(gui.InputField.Types.MULTI_CHOICE)
|
||||||
|
|
||||||
def setValues(self, values: typing.List[typing.Any]) -> None:
|
def setValues(self, values: typing.List[typing.Any]) -> None:
|
||||||
"""
|
"""
|
||||||
@ -934,7 +938,7 @@ class gui:
|
|||||||
def __init__(self, **options) -> None:
|
def __init__(self, **options) -> None:
|
||||||
super().__init__(**options)
|
super().__init__(**options)
|
||||||
self._data['values'] = gui.convertToList(options.get('values', []))
|
self._data['values'] = gui.convertToList(options.get('values', []))
|
||||||
self._type(gui.InputField.EDITABLE_LIST)
|
self._type(gui.InputField.Types.EDITABLE_LIST)
|
||||||
|
|
||||||
def _setValue(self, value):
|
def _setValue(self, value):
|
||||||
"""
|
"""
|
||||||
@ -950,7 +954,7 @@ class gui:
|
|||||||
|
|
||||||
def __init__(self, **options) -> None:
|
def __init__(self, **options) -> None:
|
||||||
super().__init__(**options)
|
super().__init__(**options)
|
||||||
self._type(gui.InputField.TEXT_TYPE)
|
self._type(gui.InputField.Types.TEXT)
|
||||||
|
|
||||||
class InfoField(InputField):
|
class InfoField(InputField):
|
||||||
"""
|
"""
|
||||||
@ -959,7 +963,7 @@ class gui:
|
|||||||
|
|
||||||
def __init__(self, **options) -> None:
|
def __init__(self, **options) -> None:
|
||||||
super().__init__(**options)
|
super().__init__(**options)
|
||||||
self._type(gui.InputField.INFO_TYPE)
|
self._type(gui.InputField.Types.INFO)
|
||||||
|
|
||||||
|
|
||||||
class UserInterfaceType(type):
|
class UserInterfaceType(type):
|
||||||
@ -1082,9 +1086,9 @@ class UserInterface(metaclass=UserInterfaceType):
|
|||||||
"""
|
"""
|
||||||
dic: gui.ValuesDictType = {}
|
dic: gui.ValuesDictType = {}
|
||||||
for k, v in self._gui.items():
|
for k, v in self._gui.items():
|
||||||
if v.isType(gui.InputField.EDITABLE_LIST):
|
if v.isType(gui.InputField.Types.EDITABLE_LIST):
|
||||||
dic[k] = gui.convertToList(v.value)
|
dic[k] = gui.convertToList(v.value)
|
||||||
elif v.isType(gui.InputField.MULTI_CHOICE_TYPE):
|
elif v.isType(gui.InputField.Types.MULTI_CHOICE):
|
||||||
dic[k] = gui.convertToChoices(v.value)
|
dic[k] = gui.convertToChoices(v.value)
|
||||||
else:
|
else:
|
||||||
dic[k] = v.value
|
dic[k] = v.value
|
||||||
@ -1110,24 +1114,24 @@ class UserInterface(metaclass=UserInterfaceType):
|
|||||||
val: typing.Any
|
val: typing.Any
|
||||||
for k, v in self._gui.items():
|
for k, v in self._gui.items():
|
||||||
logger.debug('serializing Key: %s/%s', k, v.value)
|
logger.debug('serializing Key: %s/%s', k, v.value)
|
||||||
if v.isType(gui.InputField.HIDDEN_TYPE) and v.isSerializable() is False:
|
if v.isType(gui.InputField.Types.HIDDEN) and v.isSerializable() is False:
|
||||||
# logger.debug('Field {0} is not serializable'.format(k))
|
# logger.debug('Field {0} is not serializable'.format(k))
|
||||||
continue
|
continue
|
||||||
if v.isType(gui.InputField.INFO_TYPE):
|
if v.isType(gui.InputField.Types.INFO):
|
||||||
# logger.debug('Field {} is a dummy field and will not be serialized')
|
# logger.debug('Field {} is a dummy field and will not be serialized')
|
||||||
continue
|
continue
|
||||||
if v.isType(gui.InputField.EDITABLE_LIST) or v.isType(
|
if v.isType(gui.InputField.Types.EDITABLE_LIST) or v.isType(
|
||||||
gui.InputField.MULTI_CHOICE_TYPE
|
gui.InputField.Types.MULTI_CHOICE
|
||||||
):
|
):
|
||||||
# logger.debug('Serializing value {0}'.format(v.value))
|
# logger.debug('Serializing value {0}'.format(v.value))
|
||||||
val = MULTIVALUE_FIELD + pickle.dumps(v.value, protocol=0)
|
val = MULTIVALUE_FIELD + pickle.dumps(v.value, protocol=0)
|
||||||
elif v.isType(gui.InfoField.PASSWORD_TYPE):
|
elif v.isType(gui.InfoField.Types.PASSWORD):
|
||||||
val = PASSWORD_FIELD + cryptoManager().AESCrypt(
|
val = PASSWORD_FIELD + cryptoManager().AESCrypt(
|
||||||
v.value.encode('utf8'), settings.SECRET_KEY.encode(), True
|
v.value.encode('utf8'), settings.SECRET_KEY.encode(), True
|
||||||
)
|
)
|
||||||
elif v.isType(gui.InputField.NUMERIC_TYPE):
|
elif v.isType(gui.InputField.Types.NUMERIC):
|
||||||
val = str(int(v.num())).encode('utf8')
|
val = str(int(v.num())).encode('utf8')
|
||||||
elif v.isType(gui.InputField.CHECKBOX_TYPE):
|
elif v.isType(gui.InputField.Types.CHECKBOX):
|
||||||
val = v.isTrue()
|
val = v.isTrue()
|
||||||
else:
|
else:
|
||||||
val = v.value.encode('utf8')
|
val = v.value.encode('utf8')
|
||||||
@ -1154,7 +1158,7 @@ class UserInterface(metaclass=UserInterfaceType):
|
|||||||
# Set all values to defaults ones
|
# Set all values to defaults ones
|
||||||
for k in self._gui:
|
for k in self._gui:
|
||||||
if (
|
if (
|
||||||
self._gui[k].isType(gui.InputField.HIDDEN_TYPE)
|
self._gui[k].isType(gui.InputField.Types.HIDDEN)
|
||||||
and self._gui[k].isSerializable() is False
|
and self._gui[k].isSerializable() is False
|
||||||
):
|
):
|
||||||
# logger.debug('Field {0} is not unserializable'.format(k))
|
# logger.debug('Field {0} is not unserializable'.format(k))
|
||||||
|
Loading…
Reference in New Issue
Block a user