Ejemplo n.º 1
0
    def process_message_body(self, json_data):
        enrollments = []
        for event in json_data.get('Events', []):
            section_data = event['Section']
            course_data = section_data['Course']

            section = Section()
            section.term = Term(quarter=course_data['Quarter'],
                                year=course_data['Year'])
            section.curriculum_abbr = course_data['CurriculumAbbreviation']
            section.course_number = course_data['CourseNumber']
            section.section_id = section_data['SectionID']
            section.is_primary_section = True
            section.linked_section_urls = []

            if ('PrimarySection' in event
                    and 'Course' in event['PrimarySection']):
                primary_course = event['PrimarySection']['Course']
                if primary_course:
                    section.is_primary_section = False
                    section.primary_section_curriculum_abbr = (
                        primary_course['CurriculumAbbreviation'])
                    section.primary_section_course_number = (
                        primary_course['CourseNumber'])
                    section.primary_section_id = (
                        event['PrimarySection']['SectionID'])

            try:
                valid_reg_id(event['Person']['UWRegID'])
                data = {
                    'Section':
                    section,
                    'Role':
                    get_student_sis_import_role(),
                    'UWRegID':
                    event['Person']['UWRegID'],
                    'Status':
                    self._enrollment_status(event, section),
                    'LastModified':
                    date_parse(event['LastModified']),
                    'InstructorUWRegID':
                    event['Instructor']['UWRegID'] if
                    ('Instructor' in event and event['Instructor']
                     and 'UWRegID' in event['Instructor']) else None
                }

                if 'Auditor' in event and event['Auditor']:
                    data['Role'] = 'Auditor'

                if 'RequestDate' in event:
                    data['RequestDate'] = date_parse(event['RequestDate'])

                enrollments.append(data)
            except UnhandledActionCodeException:
                self.logger.warning('{} UNKNOWN {} for {} at {}'.format(
                    log_prefix, event['Action']['Code'],
                    event['Person']['UWRegID'], event['LastModified']))
                pass
            except InvalidLoginIdException:
                self.logger.warning('{} INVALID UWRegID {}, Href: {}'.format(
                    log_prefix, event['Person']['UWRegID'],
                    event['Person']['Href']))

        self.load_enrollments(enrollments)
Ejemplo n.º 2
0
 def regid_from_request(data):
     regid = data.get('reg_id', '').strip().upper()
     valid_reg_id(regid)
     return regid
Ejemplo n.º 3
0
    def handle(self, *args, **options):
        last_access_report = options.get('last_access_report')
        enrollment_report = options.get('enrollment_report')

        users_all = 0
        users_uw = 0
        users_google = 0
        users_unknown = 0
        users_no_sisid = 0

        users_uw_login_one_year = 0
        users_google_login_one_year = 0

        users_uw_login_never = 0
        users_google_login_never = 0

        users_uw_no_enrollments = 0
        users_google_no_enrollments = 0

        enrollments = {}
        with open(enrollment_report, 'rb') as csvfile:
            reader = csv.reader(csvfile)
            for row in reader:
                sis_user_id = row[3]
                if len(sis_user_id):
                    if sis_user_id in enrollments:
                        enrollments[sis_user_id] += 1
                    else:
                        enrollments[sis_user_id] = 1

        with open(last_access_report, 'rb') as csvfile:
            reader = csv.reader(csvfile)
            for row in reader:
                sis_user_id = row[1]
                if len(sis_user_id):
                    last_access = row[3]
                    try:
                        valid_reg_id(sis_user_id)
                        users_all += 1
                        users_uw += 1
                        if len(last_access):
                            if not self.logged_in_past_year(last_access):
                                users_uw_login_one_year += 1
                        else:
                            users_uw_login_never += 1

                        if sis_user_id not in enrollments:
                            users_uw_no_enrollments += 1

                    except UserPolicyException:
                        try:
                            valid_gmail_id(sis_user_id)
                            users_all += 1
                            users_google += 1
                            if len(last_access):
                                if not self.logged_in_past_year(last_access):
                                    users_google_login_one_year += 1
                            else:
                                users_google_login_never += 1

                            if sis_user_id not in enrollments:
                                users_google_no_enrollments += 1

                        except UserPolicyException:
                            users_unknown += 1
                else:
                    if row[2] != 'Student, Test':
                        users_no_sisid += 1

        print('\n\n')
        print('All users: {}'.format(users_all))
        print('UW users: {}'.format(users_uw))
        print(
            'UW users with 0 enrollments: {}'.format(users_uw_no_enrollments))
        print('UW users with 0 logins: {}'.format(users_uw_login_never))
        print('UW users who have not logged in the past year: {}'.format(
            users_uw_login_one_year))
        print('\n\n')
        print('Google users: {}'.format(users_google))
        print('Google users with 0 enrollments: {}'.format(
            users_google_no_enrollments))
        print(
            'Google users with 0 logins: {}'.format(users_google_login_never))
        print('Google users who have not logged in the past year: {}'.format(
            users_google_login_one_year))
        print('\n\n')
        print('No SIS ID users: {}'.format(users_no_sisid))
        print('Bad SIS ID users: {}'.format(users_unknown))
        print('\n\n')