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)
def regid_from_request(data): regid = data.get('reg_id', '').strip().upper() valid_reg_id(regid) return regid
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')