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 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_mark_as_reviewed_course_run(self.course_run_state.course_run, self.user_2) self.assert_email_sent(self.user)
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_not_sent_by_project_coordinator(self): """ Verify that no email is sent if approving person is project coordinator. """ factories.CourseUserRoleFactory( course=self.course, role=PublisherUserRole.ProjectCoordinator, user=self.user) emails.send_email_for_mark_as_reviewed_course_run( self.course_run_state.course_run, self.user) self.assertEqual(len(mail.outbox), 0)
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_mark_as_reviewed_course_run( self.course_run_state.course_run, self.user_2, self.site) self.assert_email_sent(self.user)
def test_email_mark_as_reviewed_with_error(self): """ Verify that email failure log error message.""" with LogCapture(emails.logger.name) as output: emails.send_email_for_mark_as_reviewed_course_run( self.course_run, self.user, self.site) output.check(( emails.logger.name, 'ERROR', 'Failed to send email notifications for mark as reviewed of course-run {}' .format(self.course_run.id)))