def change_state(self, state, user, site=None): """ Change course run workflow state and ownership also send emails if required. """ if state == CourseRunStateChoices.Draft: self.draft() elif state == CourseRunStateChoices.Review: user_role = self.course_run.course.course_user_roles.get(user=user) if user_role.role == PublisherUserRole.ProjectCoordinator: self.change_owner_role(PublisherUserRole.CourseTeam) elif user_role.role == PublisherUserRole.CourseTeam: self.change_owner_role(PublisherUserRole.ProjectCoordinator) self.review() if waffle.switch_is_active('enable_publisher_email_notifications'): emails.send_email_for_send_for_review_course_run( self.course_run, user, site) elif state == CourseRunStateChoices.Approved: user_role = self.course_run.course.course_user_roles.get(user=user) self.approved_by_role = user_role.role self.change_owner_role(PublisherUserRole.Publisher) self.approved() if waffle.switch_is_active('enable_publisher_email_notifications'): emails.send_email_for_mark_as_reviewed_course_run( self.course_run, user, site) emails.send_email_to_publisher(self.course_run, user, site) elif state == CourseRunStateChoices.Published: self.published(site) self.save()
def change_state(self, state, user): if state == CourseRunStateChoices.Draft: self.draft() elif state == CourseRunStateChoices.Review: user_role = self.course_run.course.course_user_roles.get(user=user) if user_role.role == PublisherUserRole.MarketingReviewer: self.owner_role = PublisherUserRole.CourseTeam self.owner_role_modified = timezone.now() elif user_role.role == PublisherUserRole.CourseTeam: self.owner_role = PublisherUserRole.MarketingReviewer self.owner_role_modified = timezone.now() self.review() if waffle.switch_is_active('enable_publisher_email_notifications'): emails.send_email_for_send_for_review_course_run(self.course_run, user) elif state == CourseRunStateChoices.Approved: user_role = self.course_run.course.course_user_roles.get(user=user) self.approved_by_role = user_role.role self.owner_role = PublisherUserRole.Publisher self.owner_role_modified = timezone.now() self.approved() if waffle.switch_is_active('enable_publisher_email_notifications'): emails.send_email_for_mark_as_reviewed_course_run(self.course_run, user) emails.send_email_to_publisher(self.course_run, user) elif state == CourseRunStateChoices.Published: self.published() self.save()
def test_email_sent_by_course_team(self): """ Verify that email works successfully.""" factories.CourseUserRoleFactory( course=self.course, role=PublisherUserRole.MarketingReviewer, user=self.user ) emails.send_email_for_send_for_review_course_run(self.course_run_state.course_run, self.user_2) subject = 'Changes to {title} are ready for review'.format(title=self.course_run.course.title) self.assert_email_sent(subject, self.user)
def test_email_with_error(self): """ Verify that email failure logs error message.""" with LogCapture(emails.logger.name) as output: emails.send_email_for_send_for_review_course_run( self.course_run, self.user, self.site) output.check(( emails.logger.name, 'ERROR', 'Failed to send email notifications send for review of course-run {}' .format(self.course_run.id)))
def test_email_sent_by_course_team(self): """ Verify that email works successfully for course team user.""" factories.CourseUserRoleFactory( course=self.course, role=PublisherUserRole.ProjectCoordinator, user=self.user) emails.send_email_for_send_for_review_course_run( self.course_run_state.course_run, self.user_2) subject = 'Review requested: {title} {run_number}'.format( title=self.course, run_number=self.course_key.run) self.assert_email_sent(subject, self.user)