def get_learner_data_record(self,
                                enterprise_enrollment,
                                completed_date=None,
                                grade=None,
                                is_passing=False):
        """
        Generate a learner data transmission audit with fields properly filled in.
        """
        # pylint: disable=invalid-name
        LearnerDataTransmissionAudit = apps.get_model(
            'integrated_channel', 'LearnerDataTransmissionAudit')
        completed_timestamp = None
        course_completed = False
        if completed_date is not None:
            completed_timestamp = parse_datetime_to_epoch_millis(
                completed_date)
            course_completed = is_passing

        return LearnerDataTransmissionAudit(
            enterprise_course_enrollment_id=enterprise_enrollment.id,
            course_id=enterprise_enrollment.course_id,
            course_completed=course_completed,
            completed_timestamp=completed_timestamp,
            grade=grade,
        )
Пример #2
0
    def get_learner_data_records(self,
                                 enterprise_enrollment,
                                 completed_date=None,
                                 grade=None,
                                 is_passing=False):
        """
        Return a SapSuccessFactorsLearnerDataTransmissionAudit with the given enrollment and course completion data.

        If completed_date is None and the learner isn't passing, then course completion has not been met.

        If no remote ID can be found, return None.
        """
        completed_timestamp = None
        course_completed = False
        if completed_date is not None:
            completed_timestamp = parse_datetime_to_epoch_millis(
                completed_date)
            course_completed = is_passing

        sapsf_user_id = enterprise_enrollment.enterprise_customer_user.get_remote_id(
        )

        if sapsf_user_id is not None:
            SapSuccessFactorsLearnerDataTransmissionAudit = apps.get_model(  # pylint: disable=invalid-name
                'sap_success_factors',
                'SapSuccessFactorsLearnerDataTransmissionAudit')
            # We return two records here, one with the course key and one with the course run id, to account for
            # uncertainty about the type of content (course vs. course run) that was sent to the integrated channel.
            course_catalog_client = get_course_catalog_api_service_client(
                site=enterprise_enrollment.enterprise_customer_user.
                enterprise_customer.site)
            return [
                SapSuccessFactorsLearnerDataTransmissionAudit(
                    enterprise_course_enrollment_id=enterprise_enrollment.id,
                    sapsf_user_id=sapsf_user_id,
                    course_id=course_catalog_client.get_course_id(
                        enterprise_enrollment.course_id),
                    course_completed=course_completed,
                    completed_timestamp=completed_timestamp,
                    grade=grade,
                ),
                SapSuccessFactorsLearnerDataTransmissionAudit(
                    enterprise_course_enrollment_id=enterprise_enrollment.id,
                    sapsf_user_id=sapsf_user_id,
                    course_id=enterprise_enrollment.course_id,
                    course_completed=course_completed,
                    completed_timestamp=completed_timestamp,
                    grade=grade,
                ),
            ]
        else:
            LOGGER.debug(
                '[Integrated Channel] No learner data was sent for user [%s] because an SAP SuccessFactors user ID'
                ' could not be found.',
                enterprise_enrollment.enterprise_customer_user.username)
Пример #3
0
    def get_learner_data_records(self,
                                 enterprise_enrollment,
                                 completed_date=None,
                                 is_passing=False,
                                 **kwargs):  # pylint: disable=arguments-differ,unused-argument
        """
        Return a BlackboardLearnerDataTransmissionAudit with the given enrollment and course completion data.
        If completed_date is None, then course completion has not been met.
        If no remote ID can be found, return None.
        """
        enterprise_customer = enterprise_enrollment.enterprise_customer_user
        completed_timestamp = None
        if completed_date is not None:
            completed_timestamp = parse_datetime_to_epoch_millis(
                completed_date)

        if enterprise_customer.user_email is None:
            LOGGER.debug(
                'No learner data was sent for user [%s] because a Blackboard user ID could not be found.',
                enterprise_customer.username)
            return None

        BlackboardLearnerDataTransmissionAudit = apps.get_model(  # pylint: disable=invalid-name
            'blackboard', 'BlackboardLearnerDataTransmissionAudit')

        course_catalog_client = get_course_catalog_api_service_client(
            site=enterprise_customer.enterprise_customer.site)

        percent_grade = kwargs.get('grade_percent', None)

        return [
            BlackboardLearnerDataTransmissionAudit(
                enterprise_course_enrollment_id=enterprise_enrollment.id,
                blackboard_user_email=enterprise_customer.user_email,
                course_id=course_catalog_client.get_course_id(
                    enterprise_enrollment.course_id),
                course_completed=completed_date is not None and is_passing,
                grade=percent_grade,
                completed_timestamp=completed_timestamp,
            ),
            BlackboardLearnerDataTransmissionAudit(
                enterprise_course_enrollment_id=enterprise_enrollment.id,
                blackboard_user_email=enterprise_customer.user_email,
                course_id=enterprise_enrollment.course_id,
                course_completed=completed_date is not None and is_passing,
                grade=percent_grade,
                completed_timestamp=completed_timestamp,
            )
        ]
    def get_learner_data_record(self,
                                enterprise_enrollment,
                                completed_date=None,
                                grade=None,
                                is_passing=False):
        """
        Return a SapSuccessFactorsLearnerDataTransmissionAudit with the given enrollment and course completion data.

        If completed_date is None and the learner isn't passing, then course completion has not been met.

        If no remote ID can be found, return None.
        """
        completed_timestamp = None
        course_completed = False
        if completed_date is not None:
            completed_timestamp = parse_datetime_to_epoch_millis(
                completed_date)
            course_completed = is_passing

        sapsf_user_id = enterprise_enrollment.enterprise_customer_user.get_remote_id(
        )

        if sapsf_user_id is not None:
            SapSuccessFactorsLearnerDataTransmissionAudit = apps.get_model(  # pylint: disable=invalid-name
                'sap_success_factors',
                'SapSuccessFactorsLearnerDataTransmissionAudit')
            return SapSuccessFactorsLearnerDataTransmissionAudit(
                enterprise_course_enrollment_id=enterprise_enrollment.id,
                sapsf_user_id=sapsf_user_id,
                course_id=enterprise_enrollment.course_id,
                course_completed=course_completed,
                completed_timestamp=completed_timestamp,
                grade=grade,
            )
        else:
            LOGGER.debug(
                'No learner data was sent for user [%s] because an SAP SuccessFactors user ID could not be found.',
                enterprise_enrollment.enterprise_customer_user.username)
Пример #5
0
 def test_parse_datetime_to_epoch(self, iso8601, epoch):
     assert utils.parse_datetime_to_epoch_millis(iso8601) == epoch