Passing the connection to "apply_async" started causing issues with the
latest celery update. Also up the rate limit since this seemed unnecessarily
slow in testing.
* If there is a translation, always redirect even if not approved
* If there is no translation, only show translate tab that takes you straight to the translate page in the locale you are currently browsing
[bug 646603]
* Make several SUMO-centric substitutions (of reverse(), ModelBase, etc.) customizable through settings.
* Don't freak out if there's no `uncached` manager.
* Copy over most of MostVisitedTranslationsReadout's functionality, while only changing the query fetching the list of documents. Abstract to common _most_visited_query_and_params
* Add 'Templates' to the overview section in color.
* File bug to optimize select query later.
Also...
* Add starts_with() assertion helper.
* Add emails_with_users_and_watches() convenience function to notifications.
* Remove leading line breaks from emails.
* Add unsubscribe view to notifications app. Currently depends on Jingo and a template called "base.html".
* Rename get_watch_description() to description_of_watch(). Trying to get away from get_* functions and name them (shorter, better-flowing) nouns (unambiguously) instead.
* Stop using easy-to-misidentify letters like I and l in secrets.
* Add a secret to the default value of watch() so unsubscribing in a test requires actual secret data.
* Announcement model + migration.
* Model utils: get_for_group, get_side_wide, is_visible
* Site-wide announcements are in no group.
* Minimally formatted and styled for review/question dashboards.
* Add NewPostInLocale and NewThreadInLocale events, union them on .fire() with the existing NewPostEvent, NewThreadEvent.
* Refactor email sending as new_post_mails, new_thread_mails.
* Helper for is_watching_discussion_locale(user, locale)
* Moved _clean_next_url to -> sumo.utils.get_next_url as redirect logic.
* Use get_next_url in watch_locale view to redirect back to dashboard/document discuss pages.
* select_related() for author and updated_by.
* extra() to select author post counts. They don't hit the cache for some
reason.
* has_perm_or_owns can now compare PK==FK to skip a query.
* has_perm_or_owns bail early on anonymous users.
* Use select_related() to get last_post and last_post__author in one query.
* Use extra() to tack on the number of threads.
With a warm cache, before: 35 queries. after: 19.