mirror of https://github.com/chriskiehl/Gooey.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.0 KiB
30 lines
1.0 KiB
from typing import Mapping
|
|
|
|
from gooey import Events
|
|
from gooey.python_bindings.types import Try
|
|
from gooey.util.functional import merge
|
|
|
|
|
|
def validateForm(self) -> Try[Mapping[str, str]]: # or Exception
|
|
config = self.navbar.getActiveConfig()
|
|
localErrors: Mapping[str, str] = config.getErrors()
|
|
dynamicResult: Try[Mapping[str, str]] = self.fetchDynamicValidations()
|
|
|
|
combineErrors = lambda m: merge(localErrors, m)
|
|
return dynamicResult.map(combineErrors)
|
|
|
|
|
|
def fetchDynamicValidations(self) -> Try[Mapping[str, str]]:
|
|
# only run the dynamic validation if the user has
|
|
# specifically subscribed to that event
|
|
if Events.VALIDATE_FORM in self.buildSpec.get('use_events', []):
|
|
cmd = self.getCommandDetails()
|
|
return seeder.communicate2(cli.formValidationCmd(
|
|
cmd.target,
|
|
cmd.subcommand + 'baba',
|
|
cmd.positionals,
|
|
cmd.optionals
|
|
), self.buildSpec['encoding'])
|
|
else:
|
|
# shim response if nothing to do.
|
|
return Success({})
|