diff --git a/openedx/core/djangoapps/schedules/README.md b/openedx/core/djangoapps/schedules/README.md index 953d6c33fc..97247021c6 100644 --- a/openedx/core/djangoapps/schedules/README.md +++ b/openedx/core/djangoapps/schedules/README.md @@ -102,42 +102,118 @@ ACE_ENABLED_POLICIES = ['bulk_email_optout'] ACE_CHANNEL_SAILTHRU_TEMPLATE_NAME = '' ``` -### Configuration Models +### Configuring Schedule Creation Make sure a Site has been created at `/admin/sites/site`. +#### ScheduleConfig + In the Django admin panel at `/admin/schedules/scheduleconfig/` create a ScheduleConfig and link it to the Site. Make sure to enable all of the settings: * `create_schedules`: enables creating new Schedules when new Course Enrollments are created. -* `enqueue_*`: allows sending email tasks of this message type to celery. -* `deliver_*`: allows delivering emails through ACE for this message type. * `hold_back_ratio`: ratio of all new Course Enrollments that should NOT have a Schedule created. -If you are testing with a particular course, make sure that it is self-paced by -going to `/admin/self_paced/selfpacedconfiguration/` and add an -enabled self paced config. Then, go to Studio settings for the course and change -the Course Pacing value to "Self-Paced". Note that the Course Start Date has to -be set to sometime in the future in order to change the Course Pacing. +#### Roll-out Waffle Flag -### Waffle Flags and Switches +There is one roll-out related course waffle flag that we plan to delete called +`schedules.create_schedules_for_course`, which, if the +`ScheduleConfig.create_schedules` is disabled, will enable schedule creation on +a per-course basis. -#### Global +#### Self-paced Configuration -All waffle flags and switches can be created at `/admin/self_paced/selfpacedconfiguration/` and adding an enabled +self paced config. Then, go to Studio settings for the course and change the +Course Pacing value to "Self-Paced". Note that the Course Start Date has to be +set to sometime in the future in order to change the Course Pacing. -#### Org-level +### Configuring Upgrade Deadline on Schedule -#### Course-level +The upgrade reminder message type depends on there being a date in the +`upgrade_deadline` field of the Schedule model. Up-sell messaging will also be +added to the recurring nudge and course updates message types when an upgrade +deadline date is present. -Schedule creation: `schedules.create_schedules_for_course` +#### DynamicUpgradeDeadlineConfiguration models +In order to enable filling in the `upgrade_deadline` field of new Schedule +models created, you must create and enable one of the following: +* A DynamicUpgradeDeadlineConfiguration toggles the feature for all courses + globally. +* A OrgDynamicUpgradeDeadlineConfiguration toggles the feature for all courses + in a particular organization. +* A CourseDynamicUpgradeDeadlineConfiguration toggles the feature for a + particular course. -### Other Requirements +The CourseDynamicUpgradeDeadlineConfiguration takes precedence over the +OrgDynamicUpgradeDeadlineConfiguration which takes precedence over the global +DynamicUpgradeDeadlineConfiguration. + +The "deadline days" field specifies how many days from the day of the learner's +enrollment will be their soft upgrade deadline on the Schedule model. + +#### Verified Course Mode + +The `upgrade_deadline` will only be filled for a course if it has a verified +course mode. To add a verified course mode to a course, go to +`/admin/course_modes/coursemode/` and add a course mode linked with +the course with the "Mode" equal to "verified". + +### Configuring Email Sending + +#### ScheduleConfig + +The ScheduleConfig model at `/admin/schedules/scheduleconfig/` also has +fields which configure enqueueing and delivering emails per message type: + +* `enqueue_*`: allows sending email tasks of this message type to celery. +* `deliver_*`: allows delivering emails through ACE for this message type. + +#### Roll-out Waffle Flag + +Another roll-out related course waffle flag that we plan to delete called +`schedules.send_updates_for_course` will enable sending specifically the course +updates email per-course. + +### Configuring Highlights UI in Studio + +The button and modal on the course outline page that allows course authors to +enter section highlights can be toggled globally by going to +`/admin/waffle/switch/` and adding an active switch called +`dynamic_pacing.studio_course_update`. + +This is a roll-out related waffle switch that we will eventually delete. + +### Configuring a Learner's Schedule + +Emails will only be sent to learners who have Schedule `start_date`s or +`upgrade_deadline`s and ScheduleExperience that match the criteria for the +message type. + +#### Recurring Nudge + +* Learners must have the ScheduleExperience type of "Recurring Nudge and Upgrade +Reminder". +* Their Schedule `start_date` must be 3 or 10 days before the current date. + +#### Upgrade Reminder + +* Learners must have the ScheduleExperience type of "Recurring Nudge and Upgrade +Reminder". +* Their Schedule `upgrade_deadline` must be 2 days after the current date. + +#### Course Update + +* Learners must have the ScheduleExperience type of "Course Updates". +* Their Schedule `start_date` must be 7, 14, or any increment of 7 days up to 77 + days before the current date. ## Testing Changes