I think I'm unclear why you set the `self._view_name = old_view_name` in a `finally` block, here. This undoes L218, every time through. What's the purpose of doing this?

The function is a bit confusing - I guess I'm not seeing the point of the try-finally structure here.