示例#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 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()
示例#3
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_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)
示例#4
0
 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)