Пример #1
0
    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")
Пример #2
0
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
Пример #3
0
    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")
Пример #4
0
    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")
Пример #5
0
    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")
Пример #6
0
    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")
Пример #7
0
 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
Пример #8
0
    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")
Пример #9
0
 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
Пример #10
0
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
Пример #11
0
 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)
Пример #12
0
    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)