'return the value of field ``self`` on ``record``'

def __get__(self, record, owner):

    if (record is None):
        return self
    if record:
        record.ensure_one()
        try:
            value = record._cache[self]
        except KeyError:
            if record.id:
                self.determine_value(record)
            else:
                self.determine_draft_value(record)
            value = record._cache[self]
    else:
        value = self.convert_to_cache(False, record, validate=False)
    return self.convert_to_record(value, record)
