Fix line-endings.
Don't use dangerous defaults for security parameters.

Any hidden defaults for security-related parameters are dangerous. For
example, user many have AUTH_CROWD_STAFF_GROUP not specified and think
it means that feature is not used. Whereas if Crowd is randomly having
random group whose name matches "default", the app will have security
hole.

Also, having defaults for parameters which are expected to be site-local
is false courtesy to the user: if not set, then instead of getting clear
exceptions of non-set config settings, user will get much more confusing
errors from network stack/crowd.
Add new setting AUTH_CROWD_ALWAYS_UPDATE_GROUPS.

If true, create Django groups based on Crowd groups, and make sure
that user is assigned to same group set as Crowd.
Query nested groups from Crowd, not just top-level.

This might use config setting, but actually there's perfect sense
to just use nested groups, period. Consider for example that you make
group for site editors. Now your entire department is added to that
group. You expect that you can edit site in this case, right?
Not only set, but also reset staff/superuser flags. Also, don't mix them.