First, doing 'obj in qs' is *extremely* inefficient if, as in this case in
the context processor, you are discarding the results of qs.
Second, an additional query here was not helpful, since the objects had
already been fully fetched from the database. An object-level method was
therefore preferable, and since PageManager.public_for_user() was not used
elsewhere, this was removed and replaced with Page.is_public_for_user()
Similar to above, in the context of show_menu, using this method
just does additional unnecessary queries, when all the needed
information has already been fetched.
In addition, shown_in_menu_for_user() had a bug - for staff users it showed
all Pages in the menu, even if they had 'show_in_menu = False', which surely
was not intended.
Since shown_in_menu_for_user was not used elsewhere, it was removed, and
also PageManager since its only two methods have been removed.
…eved the chain of ancestors
This has big effects on the number of queries produced due to the page_info context_processor,
especially if the items in 'current_pages' have 'get_absolute_url' called (e.g. bread crumb).