Developers can have private settings files by creating
lms/envs/private.py or cms/envs/private.py. They are imported
at the end of dev.py. Note that they won't be imported if you
are using one of the other dev*.py variants.
Themes do not necessarily want all of the available LMS routes, such
as `/jobs` and `/university_profiles`. This change splits up the
`lms/urls.py` file and selectively enables/disables routes based on
whether or not a theme is enabled. This is a naive solution for now;
a better solution gives themes a way to selectively overrides such
routes.
Additionally, with the `MKTG_URL_LINK_MAP` setting that hits certain
routes immediately on each page render (whenever the `marketing_link`
helper function is called), themes may crash if they don't leave
all marketing link routes present in `lms/urls.py`. This change also
provides the ability to override the `MKTG_URL_LINK_MAP` in the
settings.
Finally, modify the mitxmako marketing URL middleware to not try to
reverse disabled URLs, which are those keys in the map whose values
are `None`.
Just as is done with the main LMS application.scss file, rewrite the
course.scss file with Mako to conditionally import a theme's
variables overrides. Add the course.scss file to the list of ignored
Git files so that it doesn't keep getting committed over and over
again.
This also requires us to add a hardcoded line in the assets Rakefile
for the moment, so that the course.scss.mako file gets properly
preprocessed. Once the preprocessing is done by a Django management
command, we won't have to do this anymore.
Since the theme Sass is just a simple variables overrides (for the
moment), it must be imported right after the default variables Sass
file (if at all). At the bottom of the file, it has no effect.
Adjust language of LMS emails to work specifically for Stanford. Here
there be dragons: lots of ugly conditionals that will need to be
changed once we develop a way to "theme" arbitrary strings throughout
the site.
Update the email change templates to fit with the rest of the main
site and use the standard notification template. Now they're far
prettier than before.
Instead of hardcoding things like the platform name, use the
corresponding overrideable settings instead. This allows themes to
control emails as well.