code: def validate(self, data):
          '''
          Checks if `data` respects this preset specification
  
          It will check that every required property is present and
          for every property type it will make some specific control.
          '''
          for prop in self.properties:
              if prop.id in data:
                  if prop.type == 'string':
                      if not isinstance(data[prop.id], basestring):
                          raise PresetFieldTypeException("property '{}' must be of type string".format(prop.id))
                  elif prop.type == 'enum':
                      if not isinstance(data[prop.id], basestring):
                          raise PresetFieldTypeException("property '{}' must be of type string".format(prop.id))
                      if data[prop.id] not in prop.values:
                          raise PresetException("property '{}' can be one of {}".format(prop.id, prop.values))
              else:
                  if prop.required:
                      raise PresetMissingFieldException("missing required property: '{}'".format(prop.id)f validate(self, data):
          '''
          Checks if `data` respects this preset specification
  
          It will check that every required property is present and
          for every property type it will make some specific control.
          '''
          for prop in self.properties:
              if prop.id in data:
                  if prop.type == 'string':
                      if not isinstance(data[prop.id], basestring):
                          raise PresetFieldTypeException("property '{}' must be of type string".format(prop.id))
                  elif prop.type == 'enum':
                      if not isinstance(data[prop.id], basestring):
                          raise PresetFieldTypeException("property '{}' must be of type string".format(prop.id))
                      if data[prop.id] not in prop.values:
                          raise PresetException("property '{}' can be one of {}".format(prop.id, prop.values))
              else:
                  if prop.required:
                      raise PresetMissingFieldException("missing required property: '{}'".format(prop.id))
docs: Checks if `data` respects this preset specification
  
          It will check that every required property is present and
          for every property type it will make some specific control.