Beispiel #1
0
def get_users_for_course(course_id, user_id, page):
    canvas = Users(as_user=user_id)
    users = canvas.get_users_for_course(course_id,
                                        params={
                                            'page':
                                            page,
                                            'per_page':
                                            getattr(settings,
                                                    'COURSE_ROSTER_PER_PAGE',
                                                    50),
                                            'enrollment_type': ['student'],
                                            'enrollment_state': ['active'],
                                            'include':
                                            ['enrollments', 'avatar_url']
                                        })
    return (users, canvas.next_page_url)
    def test_get_users_for_course_id(self):
        canvas = Users()

        users = canvas.get_users_for_course("862539", params={
            "search_term": "jav", "include": ["enrollments"]})

        self.assertEquals(len(users), 3, "Found 3 canvas users")

        user = users[0]
        self.assertEquals(user.login_id, "javerage", "Login ID")
        self.assertEquals(
            user.sis_user_id, "15AE3883B6EC44C349E04E5FE089ABEB",
            "SIS User ID")
        self.assertEquals(user.name, "JAMES AVERAGE", "Name")
        self.assertEquals(
            user.sortable_name, "AVERAGE, JAMES", "Sortable Name")
        enrollment = user.enrollments[0]
        self.assertEquals(enrollment.sis_course_id, "2015-summer-TRAIN-100-A")
        self.assertEquals(enrollment.role, "DesignerEnrollment", "Role")
    def handle(self, *args, **options):
        file_path = options.get('file_path')

        outfile = open('lti_instructors.csv', 'wb')
        csv.register_dialect('unix_newline', lineterminator='\n')
        writer = csv.writer(outfile, dialect='unix_newline')

        client = Users()

        with open(file_path, 'rb') as csvfile:
            writer.writerow(
                ['login', 'email', 'full_name', 'first_name', 'last_name'])

            course_ids = {}
            user_ids = {}

            reader = csv.reader(csvfile)
            for row in reader:
                if not len(row):
                    continue

                context_type = row[0]
                course_id = row[1]

                if context_type.lower() != 'course':
                    continue

                if course_id in course_ids:
                    continue

                users = client.get_users_for_course(
                    course_id,
                    params={
                        'enrollment_type': ['teacher', 'designer'],
                        'include': ['email']
                    })
                course_ids[course_id] = True

                for user in users:
                    if user.user_id in user_ids:
                        continue
                    user_ids[user.user_id] = True

                    email = user.email
                    if email is None:
                        email = '*****@*****.**' % user.login_id

                    last_name = ''
                    first_name = ''
                    try:
                        (last_name, first_name) = user.sortable_name.split(',')
                    except ValueError:
                        pass

                    writer.writerow([
                        user.login_id, email,
                        user.name.strip().encode('utf-8'),
                        first_name.strip().encode('utf-8'),
                        last_name.strip().encode('utf-8')
                    ])

        outfile.close()