Adds override functionality to class capacity script.
Revert "Disable context processors when rendering e-mail"

Django internally caches the list of functions specified in
TEMPLATE_CONTEXT_PROCESSORS, to save on imports:

https://github.com/django/django/blame/1.4/django/template/context.py#L139

Side effect of the reverted commit: If a comm panel preview is the first
request handled after a code reload, the website will run with no
context processors.

With a testing procedure of sitting on the preview page and refreshing,
this gives the appearance of that fix having worked.

(As MessageRequest.parseSmartText was only ever triggered by the dbmail
cron script, half of this didn't actually need to be reverted for
correctness.)

This reverts commit d9263ef802fa4abc351a69e0425562fd059623e6.
Comm panel: Preview with correct user (try 2).

A second attempt at d9263ef802fa4abc351a69e0425562fd059623e6.

Render the e-mail preview using Django's vanilla Context rather than our
AutoRequestContext, as noted in this comment:

https://github.com/learning-unlimited/ESP-Website/blob/7e32ad7b50/esp/esp/dbmail/models.py#L319
Fixes #586: updating availability when classes are scheduled
Hush a SyntaxWarning about * imports.

"SyntaxWarning: import * only allowed at module level"

The restriction was introduced in Python 2.1:
    http://stackoverflow.com/questions/3571514/
I have no idea why this didn't come up before.
Fix Content-Length in StripWhitespaceMIddleware.

If we don't adjust the Content-Length header upon stripping whitespace
then some browsers like Google Chrome detect the discrepancy. This can
manifest as a perplexing failure to load small static files (under the
200-byte threshold that wakes up Django's gzip middleware) on some dev
servers.
QSD Editing: Show session-expired error popups.

jQuery's ajax code takes 500 as failure, so use the `fail` callback.
Code to display errors in the success callback is retained, since 204
and 304 are successes but we shouldn't be returning those.

(204 becomes "success" in 1.7.1, and "nocontent" by 1.9.1.)

See also:
* http://api.jquery.com/jQuery.ajax/#jqXHR
* search the jQuery 1.9.1 code for "isSuccess"
* https://github.com/jquery/jquery/commit/bfc61b879e
Fixes email host in email addresses

(cherry-picked from commit 61c8022b153bade0a9b6319c1fef96454f834c1e)
Fixes the copy classes template

(cherry picked from commit 7d5bb2017b6f60375473fd0cac3647e163022363)
More tag-ification for open_class_category
Tag-ifies the open class category name/symbol
Moves open_class_category to be a property of Program

Since open_class_category is a program tag, it makes sense to make
it a property on a program. If there is no tag for the particular
program, it defaults to the global tag, which is the desired
behavior.
Adds a default for open_class_category that is not None
Removes qsd_tag and updates the open_class_category property
Minor fix for the rebase of #645.
Allows QSD urls to be template variables.

This was somehow removed in the big schema changes, and it makes several
useful patterns impossible, so I'd like to add it back.  See 9c29eed for
the original addition of this functionality.
Uses open_class_category in listclasses.html.
Uses program.grade_{min,max} for open classes.

It was previously hard-coded at (7,12), now it will check properly.
Fixes to rebase and to previous commit.

Turns out module.program only works sometimes and we should have used
module.get_program().
Adds Administrators during migrations

The migrations would add users with V/Flags/UserRole/Administrator to
the Administrator Group, and give users with V/Administer on
Q/Programs/* an Administer Permission on that program. However, they
would skip over users with V/Administer on Q.

This adds additional steps to the migrations, and does one of two things
to users with V/Administer on Q:

 - If enddate is sufficiently far away, the user is added to the
   Administrator group.
 - If the bit was set to expire, the user is given an Administer
   privilege on all programs, with the same expiration date.