Related to ticket #1358, libraries docs iframe
~~This also contains some of the work for refactoring away from version
selects being copy pasted everywhere.~~ Removed for now, had side
effects.
This modernization occurs on the fly over potentially-cached S3 files. This
means, the legacy doc pages are fetched and cached just like any other S3
static content, and the modernization happens when the page is requested. This
way, we can safely render modern parts of the pages (like the header) and
account for dynamic state such as logged in users.
The resulting docs (also called FrankenDocs :-)) are processed using
BeautifulSoup and a fairly simple heuristic that can be found in the
`core/htmlhelper.py` module.
- Add RenderedContent model and related helper methods
- Change StaticContentView `get()` logic to try the cache, then the db, then S3
- Change StaticContentView to update db appropriately
- Refactoring for readability/maintainability