示例#1
0
    def serialize(self, obj, valid=True):
        if obj is None:
            value = self.empty_value
        elif dict in self.types:
            value = {}
            if self.additional_properties:
                iterator = obj.keys()
            else:
                iterator = self._attributes.keys()
            for key in iterator:
                if key.startswith("$"):
                    try:
                        val = data_types.for_key(key).serialize(obj)
                    except NotImplementedError:
                        val = obj.get(key, None)
                else:
                    val = obj.get(key, None)
                    if key in self._attributes:
                        val = self._attributes[key].serialize(val)

                if val is not None:
                    value[key] = val

        else:
            value = self.types[0](obj)
        if valid:
            utils.validate(value, self.definition)
        return value
示例#2
0
    def resolve(self, obj, client):
        if obj is None:
            return self.empty_value

        if PROPERTIES in self.definition:
            key = list(self.definition[PROPERTIES].keys())[0]
            obj = data_types.for_key(key).resolve(obj, client)

        return obj