The new version should determine if a ccx is active by using the course_id from the URL match.
If it builds a CCXLocator, then a ccx has been requested and the decorator should find the ccx and pass it in to the wrapped view.
If it builds a CourseLocator, then there is no active ccx and None should be passed to the views as the active ccx.
Views will be responsible for accepting a ccx or None, and if needed will raise appropriate errors or redirect appropriately if a ccx is required but not supplied by this wrapper.
The new version should determine if a ccx is active by using the course_id from the URL match.
If it builds a CCXLocator, then a ccx has been requested and the decorator should find the ccx and pass it in to the wrapped view.
If it builds a CourseLocator, then there is no active ccx and
None
should be passed to the views as the active ccx.Views will be responsible for accepting a ccx or None, and if needed will raise appropriate errors or redirect appropriately if a ccx is required but not supplied by this wrapper.