'Context manager to use the frozen property values from the database.
The live property values are always substituted back when the context
ends.'

@contextlib.contextmanager
def frozen_properties(self):

    live_props = self.properties
    props = self.frozen_definition().properties(self.properties_schema, self.context)
    try:
        self.properties = props
        (yield props)
    finally:
        self.properties = live_props
