Пример #1
0
    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()
Пример #2
0
 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)
Пример #3
0
    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()
Пример #4
0
 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)
Пример #5
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)
Пример #6
0
 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)))