def test_enrollments_by_regid(self): with self.settings( RESTCLIENTS_CANVAS_DAO_CLASS='restclients.dao_implementation.canvas.File'): canvas = Enrollments() # Javerage's regid enrollments = canvas.get_enrollments_for_regid("9136CCB8F66711D5BE060004AC494FFE") self.assertEquals(len(enrollments), 2, "Has 2 canvas enrollments") enrollment = enrollments[0] self.assertEquals(enrollment.course.course_url, "https://canvas.uw.edu/courses/149650", "Has proper course url") self.assertEquals(enrollment.sis_course_id, "2013-spring-PHYS-121-A") self.assertEquals(enrollment.sws_course_id(), "2013,spring,PHYS,121/A") stu_enrollment = enrollments[1] self.assertEquals(stu_enrollment.grade_html_url, "https://uw.test.instructure.com/courses/862539/grades/496164", "Grade URL") self.assertEquals(stu_enrollment.current_score, 23.0, "Current score") self.assertEquals(stu_enrollment.login_id, "javerage", "Login ID") self.assertEquals(stu_enrollment.sis_user_id, "9136CCB8F66711D5BE060004AC494FFE", "SIS User ID") self.assertEquals(stu_enrollment.name, "JAMES AVERAGE STUDENT", "Name") self.assertEquals(enrollment.sortable_name, "STUDENT, JAMES AVERAGE", "Sortable Name") self.assertEquals(str(stu_enrollment.last_activity_at), "2012-08-18 23:08:51-06:00", "Last activity datetime") self.assertEquals(stu_enrollment.total_activity_time, 100, "Total activity time") self.assertEquals(stu_enrollment.status, CanvasEnrollment.STATUS_ACTIVE, "Status")
def get_sis_enrollments_for_user_in_course(user_sis_id, course_sis_id): canvas = Enrollments() enrollments = [] for enrollment in canvas.get_enrollments_for_course_by_sis_id( course_sis_id, {"user_id": canvas.sis_user_id(user_sis_id)} ): try: valid_academic_section_sis_id(enrollment.sis_section_id) enrollments.append(enrollment) except CoursePolicyException: continue return enrollments
def test_enrollments_for_course_id(self): with self.settings( RESTCLIENTS_CANVAS_DAO_CLASS='restclients.dao_implementation.canvas.File'): canvas = Enrollments() enrollments = canvas.get_enrollments_for_course_by_sis_id("2013-autumn-PHYS-248-A") self.assertEquals(len(enrollments), 3, "Has 3 canvas enrollments") students = canvas.get_enrollments_for_course_by_sis_id("2013-autumn-PHYS-248-A", {"role": "student"}) self.assertEquals(len(students), 2, "Has 2 student enrollments")
def test_enrollments_for_course_id(self): with self.settings(RESTCLIENTS_CANVAS_DAO_CLASS= 'restclients.dao_implementation.canvas.File'): canvas = Enrollments() enrollments = canvas.get_enrollments_for_course_by_sis_id( "2013-autumn-PHYS-248-A") self.assertEquals(len(enrollments), 3, "Has 3 canvas enrollments") students = canvas.get_enrollments_for_course_by_sis_id( "2013-autumn-PHYS-248-A", {"role": "student"}) self.assertEquals(len(students), 2, "Has 2 student enrollments")
def test_pending_enrollments(self): with self.settings( RESTCLIENTS_CANVAS_DAO_CLASS='restclients.dao_implementation.canvas.File'): canvas = Enrollments() enrollments = canvas.get_enrollments_for_course("862539") self.assertEquals(len(enrollments), 1, "Has 1 canvas enrollment") enrollment = enrollments[0] self.assertEquals(enrollment.name, "*****@*****.**", "Name") self.assertEquals(enrollment.sortable_name, "*****@*****.**", "Sortable Name") self.assertEquals(enrollment.login_id, None) self.assertEquals(enrollment.status, CanvasEnrollment.STATUS_INVITED, "Status")
def test_pending_enrollments(self): with self.settings(RESTCLIENTS_CANVAS_DAO_CLASS= 'restclients.dao_implementation.canvas.File'): canvas = Enrollments() enrollments = canvas.get_enrollments_for_course("862539") self.assertEquals(len(enrollments), 1, "Has 1 canvas enrollment") enrollment = enrollments[0] self.assertEquals(enrollment.name, "*****@*****.**", "Name") self.assertEquals(enrollment.sortable_name, "*****@*****.**", "Sortable Name") self.assertEquals(enrollment.login_id, None) self.assertEquals(enrollment.status, CanvasEnrollment.STATUS_INVITED, "Status")
def _user_from_json(self, data): user = CanvasUser() user.user_id = data["id"] user.name = data["name"] user.short_name = data["short_name"] if "short_name" in data else None user.sortable_name = data["sortable_name"] if "sortable_name" in data else None user.login_id = data["login_id"] if "login_id" in data else None user.sis_user_id = data["sis_user_id"] if "sis_user_id" in data else None user.email = data["email"] if "email" in data else None user.time_zone = data["time_zone"] if "time_zone" in data else None user.locale = data["locale"] if "locale" in data else None user.avatar_url = data["avatar_url"] if "avatar_url" in data else None if "enrollments" in data: enrollments = Enrollments() user.enrollments = [] for enr_datum in data["enrollments"]: user.enrollments.append(enrollments._enrollment_from_json(enr_datum)) return user
def test_enrollments_by_regid(self): with self.settings(RESTCLIENTS_CANVAS_DAO_CLASS= 'restclients.dao_implementation.canvas.File'): canvas = Enrollments() # Javerage's regid enrollments = canvas.get_enrollments_for_regid( "9136CCB8F66711D5BE060004AC494FFE") self.assertEquals(len(enrollments), 2, "Has 2 canvas enrollments") enrollment = enrollments[0] self.assertEquals(enrollment.course.course_url, "https://canvas.uw.edu/courses/149650", "Has proper course url") self.assertEquals(enrollment.sis_course_id, "2013-spring-PHYS-121-A") self.assertEquals(enrollment.sws_course_id(), "2013,spring,PHYS,121/A") stu_enrollment = enrollments[1] self.assertEquals( stu_enrollment.grade_html_url, "https://uw.test.instructure.com/courses/862539/grades/496164", "Grade URL") self.assertEquals(stu_enrollment.current_score, 23.0, "Current score") self.assertEquals(stu_enrollment.login_id, "javerage", "Login ID") self.assertEquals(stu_enrollment.sis_user_id, "9136CCB8F66711D5BE060004AC494FFE", "SIS User ID") self.assertEquals(stu_enrollment.name, "JAMES AVERAGE STUDENT", "Name") self.assertEquals(enrollment.sortable_name, "STUDENT, JAMES AVERAGE", "Sortable Name") self.assertEquals(str(stu_enrollment.last_activity_at), "2012-08-18 23:08:51-06:00", "Last activity datetime") self.assertEquals(stu_enrollment.total_activity_time, 100, "Total activity time") self.assertEquals(stu_enrollment.status, CanvasEnrollment.STATUS_ACTIVE, "Status")
def _user_from_json(self, data): user = CanvasUser() user.user_id = data["id"] user.name = data["name"] user.short_name = data["short_name"] if "short_name" in data else None user.sortable_name = data[ "sortable_name"] if "sortable_name" in data else None user.login_id = data["login_id"] if "login_id" in data else None user.sis_user_id = data[ "sis_user_id"] if "sis_user_id" in data else None user.email = data["email"] if "email" in data else None user.time_zone = data["time_zone"] if "time_zone" in data else None user.locale = data["locale"] if "locale" in data else None user.avatar_url = data["avatar_url"] if "avatar_url" in data else None if "enrollments" in data: enrollments = Enrollments() user.enrollments = [] for enr_datum in data["enrollments"]: user.enrollments.append( enrollments._enrollment_from_json(enr_datum)) return user
def get_sis_enrollments_for_course(course_sis_id): canvas = Enrollments() enrollments = [] for section in get_sis_sections_for_course(course_sis_id): enrollments.extend(canvas.get_enrollments_for_section(section.section_id)) return enrollments
def get_enrollments_for_regid(self, regid): deprecation( "Use restclients.canvas.enrollments.get_enrollments_for_regid") from restclients.canvas.enrollments import Enrollments return Enrollments().get_enrollments_for_regid(regid)
def _api_import_users(self, import_id, users, role, section, section_only, notify_users): try: imp = AddUsersImport.objects.get(id=import_id) imp.import_pid = os.getpid() imp.save() # reflect importer enrollments privilege enroll_api = Enrollments(as_user=imp.importer_id) for u in users: try: canvas_user = get_user_by_sis_id(u.regid) except DataFailureException as ex: if ex.status == 404: self._log.info( 'CREATE USER "%s" login: %s reg_id: %s' % ( u.name, u.login, u.regid)) # add user as "admin" on behalf of importer canvas_user = create_user(CanvasUser( name=u.name, login_id=u.login, sis_user_id=u.regid, email=u.email)) else: raise Exception( 'Cannot create user %s: %s' % (u.login, ex)) enroll_params = { 'role_id': role.role_id, 'enrollment_state': 'active', 'limit_privileges_to_course_section': section_only, 'notify': notify_users } if section.section_id and int(section.section_id) > 0: enroll_params['course_section_id'] = section.section_id self._log.info( '%s ADDING %s (%s) TO %s: %s ' '(%s) AS %s (%s) - O:%s, N:%s' % ( imp.importer, canvas_user.login_id, canvas_user.user_id, section.course_id, section.sis_section_id, section.section_id, role.label, role.role_id, enroll_params['limit_privileges_to_course_section'], enroll_params['notify'])) enroll_api.enroll_user(section.course_id, canvas_user.user_id, role.base_role_type, enroll_params) imp.imported += 1 imp.save() except Exception as ex: self._log.error('EXCEPTION: %s' % (ex)) imp.import_error = "exception: %s" % (ex) imp.save() sys.exit(0)