diff --git a/job.py b/job.py index 6e23975..401bbce 100644 --- a/job.py +++ b/job.py @@ -1,14 +1,26 @@ import os.path import base64 import json -from jsonschema import validate +from validate import * from args import * asset_src_schema = { "type":"object", "properties":{ - "graphics":{"type":"array"} - } + "graphics":{ + "type":"array", + "items":{ + "type":"object", + "properties":{ + "swf":{"type":"string"}, + "type":{"type":"number","default":1}, + "scale":{"type":"number","default":1} + }, + "required":["swf"] + } + } + }, + "required":["graphics"] } class Job: @@ -37,7 +49,7 @@ try: validate(instance=file_json, schema=asset_src_schema) except Exception, e: - raise Exception("Faield: " + in_files + " " + str(e)) + raise Exception("Failed: " + in_file + " " + str(e)) for graphic_json in file_json["graphics"]: self.graphics.append(Graphic(graphic_json)) @@ -49,5 +61,5 @@ def __init__(self, json): self.json = json - def get_cmd(): + def get_cmd(self): return {} diff --git a/job.py b/job.py index 6e23975..401bbce 100644 --- a/job.py +++ b/job.py @@ -1,14 +1,26 @@ import os.path import base64 import json -from jsonschema import validate +from validate import * from args import * asset_src_schema = { "type":"object", "properties":{ - "graphics":{"type":"array"} - } + "graphics":{ + "type":"array", + "items":{ + "type":"object", + "properties":{ + "swf":{"type":"string"}, + "type":{"type":"number","default":1}, + "scale":{"type":"number","default":1} + }, + "required":["swf"] + } + } + }, + "required":["graphics"] } class Job: @@ -37,7 +49,7 @@ try: validate(instance=file_json, schema=asset_src_schema) except Exception, e: - raise Exception("Faield: " + in_files + " " + str(e)) + raise Exception("Failed: " + in_file + " " + str(e)) for graphic_json in file_json["graphics"]: self.graphics.append(Graphic(graphic_json)) @@ -49,5 +61,5 @@ def __init__(self, json): self.json = json - def get_cmd(): + def get_cmd(self): return {} diff --git a/validate.py b/validate.py new file mode 100644 index 0000000..aba3988 --- /dev/null +++ b/validate.py @@ -0,0 +1,25 @@ +from jsonschema import validators, Draft7Validator +import jsonschema + +def extend_with_default(validator_class): + validate_properties = validator_class.VALIDATORS["properties"] + + def set_defaults(validator, properties, instance, schema): + #print properties + for property, subschema in properties.iteritems(): + #print str(property) + " " + str(subschema) + if "default" in subschema: + instance.setdefault(property, subschema["default"]) + + return validate_properties(validator, properties, instance, schema) + #print val + #for error in val: + # yield error + + return validators.extend(validator_class, {"properties" : set_defaults}) + +DefaultValidatingDraft7Validator = extend_with_default(Draft7Validator) + +def validate(instance, schema): + return DefaultValidatingDraft7Validator(schema).validate(instance) + #return jsonschema.validate(instance=instance, schema=schema, cls=DefaultValidatingDraft7Validator)