Merge feature SOL-20

This is a pull request to merge the SOL-20 feature (https://openedx.atlassian.net/browse/SOL-20).
I won't point out every case, but you should follow the Python line wrapping guidelines:

https://github.com/edx/edx-platform/wiki/Python-Guidelines