Prior to this commit, any apps that update their data when courses are published had to create their own management commands for bootstrapping or error recovery (e.g. generate_course_overviews, generate_course_blocks). This is a management command to allow us to generically simulate a course_publish signal so that any async tasks that trigger actions off of that can do so without having to each write their own management commands. It has a few options to make it more ops friendly: * Can specify a set of courses, but defaults to all courses in the modulestore. * Can specify a set of listeners, so we can bootstrap a new app without rebuilding everything. * Can specify a delay between emitting signals so that we don't flood the queues and block author-initiated publishes from going through in a timely manner. * Dry-run mode for a simple preview of what the script will attempt.
Open edX -------- This is the root package for Open edX. The intent is that all importable code from Open edX will eventually live here, including the code in the lms, cms, and common directories. If you're adding a new Django app, place it in core/djangoapps. If you're adding utilities that require Django, place them in core/djangolib. If you're adding code that defines no Django models or views of its own but is widely useful, put it in core/lib. Note: All new code should be created in this package, and the legacy code will be moved here gradually. For now the code is not structured like this, and hence legacy code will continue to live in a number of different packages.