コード例 #1
0
 def test_programs_disabled(self, mock_is_learner_issuance_enabled, mock_task):
     """
     Ensures that the receiver function does nothing when the credentials API
     configuration is not enabled.
     """
     handle_course_cert_awarded(**self.signal_kwargs)
     self.assertEqual(mock_is_learner_issuance_enabled.call_count, 1)
     self.assertEqual(mock_task.call_count, 0)
コード例 #2
0
 def test_programs_disabled(self, mock_is_learner_issuance_enabled, mock_task):
     """
     Ensures that the receiver function does nothing when the credentials API
     configuration is not enabled.
     """
     handle_course_cert_awarded(**self.signal_kwargs)
     self.assertEqual(mock_is_learner_issuance_enabled.call_count, 1)
     self.assertEqual(mock_task.call_count, 0)
コード例 #3
0
ファイル: test_signals.py プロジェクト: 28554010/edx-platform
 def test_programs_enabled(self, mock_is_certification_enabled, mock_task):
     """
     Ensures that the receiver function invokes the expected celery task
     when the programs API configuration is enabled.
     """
     mock_is_certification_enabled.return_value = True
     handle_course_cert_awarded(**self.signal_kwargs)
     self.assertEqual(mock_is_certification_enabled.call_count, 1)
     self.assertEqual(mock_task.call_count, 1)
     self.assertEqual(mock_task.call_args[0], (TEST_USERNAME,))
コード例 #4
0
 def test_programs_enabled(self, mock_is_certification_enabled, mock_task):
     """
     Ensures that the receiver function invokes the expected celery task
     when the programs API configuration is enabled.
     """
     mock_is_certification_enabled.return_value = True
     handle_course_cert_awarded(**self.signal_kwargs)
     self.assertEqual(mock_is_certification_enabled.call_count, 1)
     self.assertEqual(mock_task.call_count, 1)
     self.assertEqual(mock_task.call_args[0], (TEST_USERNAME, ))
コード例 #5
0
ファイル: test_signals.py プロジェクト: yrchen/edx-platform
    def test_programs_enabled(self, mock_is_learner_issuance_enabled, mock_task):
        """
        Ensures that the receiver function invokes the expected celery task
        when the credentials API configuration is enabled.
        """
        mock_is_learner_issuance_enabled.return_value = True

        handle_course_cert_awarded(**self.signal_kwargs)

        assert mock_is_learner_issuance_enabled.call_count == 1
        assert mock_task.call_count == 1
        assert mock_task.call_args[0] == (TEST_USERNAME,)
コード例 #6
0
    def send_notifications(self, certs, grades, delay=0):
        """ Run actual handler commands for the provided certs and grades. """

        # First, do certs
        for i, cert in enumerate(certs, start=1):
            log.info(
                "Handling credential changes %d for certificate %s",
                i,
                certstr(cert),
            )
            if delay:
                time.sleep(delay)

            signal_args = {
                'sender': None,
                'user': cert.user,
                'course_key': cert.course_id,
                'mode': cert.mode,
                'status': cert.status,
            }
            handle_course_cert_awarded(**signal_args)
            handle_course_cert_changed(**signal_args)
            handle_cert_change(**signal_args)

        # Then do grades
        for i, grade in enumerate(grades, start=1):
            log.info(
                "Handling grade changes %d for grade %s",
                i,
                gradestr(grade),
            )
            if delay:
                time.sleep(delay)

            user = User.objects.get(id=grade.user_id)
            send_grade_if_interesting(user, grade.course_id, None, None,
                                      grade.letter_grade, grade.percent_grade)
コード例 #7
0
    def send_notifications(self,
                           certs,
                           grades,
                           site_config=None,
                           delay=0,
                           page_size=0,
                           verbose=False,
                           notify_programs=False):
        """ Run actual handler commands for the provided certs and grades. """

        course_cert_info = {}
        # First, do certs
        for i, cert in paged_query(certs, delay, page_size):
            if site_config and not site_config.has_org(cert.course_id.org):
                log.info(u"Skipping credential changes %d for certificate %s",
                         i, certstr(cert))
                continue

            log.info(
                u"Handling credential changes %d for certificate %s",
                i,
                certstr(cert),
            )

            signal_args = {
                'sender': None,
                'user': cert.user,
                'course_key': cert.course_id,
                'mode': cert.mode,
                'status': cert.status,
                'verbose': verbose,
            }

            data = {'mode': cert.mode, 'status': cert.status}

            course_cert_info[(cert.user.id, str(cert.course_id))] = data
            handle_course_cert_changed(**signal_args)
            if notify_programs and CertificateStatuses.is_passing_status(
                    cert.status):
                handle_course_cert_awarded(**signal_args)

        # Then do grades
        for i, grade in paged_query(grades, delay, page_size):
            if site_config and not site_config.has_org(grade.course_id.org):
                log.info(u"Skipping grade changes %d for grade %s", i,
                         gradestr(grade))
                continue

            log.info(
                u"Handling grade changes %d for grade %s",
                i,
                gradestr(grade),
            )

            user = User.objects.get(id=grade.user_id)

            # Grab mode/status from cert call
            key = (user.id, str(grade.course_id))
            cert_info = course_cert_info.get(key, {})
            mode = cert_info.get('mode', None)
            status = cert_info.get('status', None)

            send_grade_if_interesting(user,
                                      grade.course_id,
                                      mode,
                                      status,
                                      grade.letter_grade,
                                      grade.percent_grade,
                                      verbose=verbose)