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.
79 lines
1.7 KiB
79 lines
1.7 KiB
'''
|
|
Validates that the json has meaningful keys
|
|
'''
|
|
|
|
import itertools
|
|
|
|
|
|
a = {
|
|
'required' : [
|
|
{
|
|
'component': 'TextField',
|
|
'data': {
|
|
'display_name': 'filename',
|
|
'help_text': 'path to file you want to process',
|
|
'command_args': ['-f', '--infile']
|
|
}
|
|
},
|
|
{
|
|
'component': 'FileChooser',
|
|
'data': {
|
|
'display_name': 'Output Location',
|
|
'help_text': 'Where to save the file',
|
|
'command_args': ['-o', '--outfile']
|
|
}
|
|
}
|
|
],
|
|
'optional' : [
|
|
{
|
|
'component': 'RadioGroup',
|
|
'data': [
|
|
{
|
|
'display_name': 'Output Location',
|
|
'help_text': 'Where to save the file',
|
|
'command_args': ['-o', '--outfile']
|
|
}, {
|
|
'display_name': 'Output Location',
|
|
'help_text': 'Where to save the file',
|
|
'command_args': ['-o', '--outfile']
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
|
|
VALID_WIDGETS = (
|
|
'FileChooser',
|
|
'DirChooser',
|
|
'DateChooser',
|
|
'TextField',
|
|
'Dropdown',
|
|
'Counter',
|
|
'RadioGroup'
|
|
)
|
|
|
|
|
|
class MalformedBuildSpecException(Exception):
|
|
pass
|
|
|
|
def validate(json_string):
|
|
required = json_string.get('required')
|
|
optional = json_string.get('optional')
|
|
|
|
if not required or not optional:
|
|
raise MalformedBuildSpecException("All objects must be children of 'required,' or 'optional'")
|
|
|
|
objects = [item for key in json_string for item in json_string[key]]
|
|
|
|
for obj in objects:
|
|
if obj['component'] not in VALID_WIDGETS:
|
|
raise MalformedBuildSpecException("Invalid Component name: {0}".format(obj['component']))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
validate(a)
|
|
|
|
|
|
|
|
|