'Invoke the compute method on ``records``; the results are in cache.'

def compute_value(self, records):

    fields = records._field_computed[self]
    with records.env.do_in_draft():
        with records.env.protecting(fields, records):
            try:
                self._compute_value(records)
            except (AccessError, MissingError):
                for record in records:
                    try:
                        self._compute_value(record)
                    except Exception as exc:
                        record._cache[self.name] = FailedValue(exc)
