Skip to content

Instantly share code, notes, and snippets.

@jhenry
Last active July 8, 2022 22:53
Show Gist options
  • Save jhenry/8d54c7db7b8c1c5a4e6f53a27d4fec15 to your computer and use it in GitHub Desktop.
Save jhenry/8d54c7db7b8c1c5a4e6f53a27d4fec15 to your computer and use it in GitHub Desktop.
generate batch files for brightspace sandboxes and enrollments
import numpy as np
import pandas as pd
output_path = '/Users/jhenry/Desktop/batch-sb'
users = pd.read_csv("/Users/jhenry/Desktop/usermap-sandboxers.csv")
course_cols = ['course_code', 'course_name', 'semester_code', 'template_code', 'template_name', 'dept_code', 'path', 'active', 'link_to_ct']
courses = pd.DataFrame(columns=course_cols)
enroll_cols = ['action', 'username', 'org_def_id', 'role_name', 'org_unit_code']
enrollments = pd.DataFrame(columns=enroll_cols)
def make_course_rows(users, courses, crsnum='001'):
for index, row in users.iterrows():
course = dict(
course_code = row['netid'].upper() + '_SANDBOX_' + crsnum,
course_name = row['netid'].upper() + crsnum + ': Sandbox Space',
semester_code = 'SB_SEM',
template_code = 'ct_user_sandboxes_cb',
template_name = 'User Sandboxes Container',
dept_code = 'dept_Brightspace_Training_d2l',
path = '',
active = 'FALSE',
link_to_ct = 'TRUE'
)
course_df = pd.DataFrame([course])
courses = pd.concat([courses, course_df], ignore_index=True)
return courses
def enroll_instructors(users, courses, enrollments):
for uindex, user in users.iterrows():
for cindex, course in courses.iterrows():
if user['netid'].upper() in course['course_code']:
enrollment = dict (action = 'ENROLL', username=user['uname'], org_def_id='', role_name='Instructor', org_unit_code=course['course_code'])
enrollment_df = pd.DataFrame([enrollment])
enrollments = pd.concat([enrollments, enrollment_df], ignore_index=True)
return enrollments
def enroll_students(users, courses, enrollments):
for uindex, user in users.iterrows():
for cindex, course in courses.iterrows():
if user['netid'].upper() not in course['course_code']:
enrollment = dict (action = 'ENROLL', username=user['uname'], org_def_id='', role_name='Learner', org_unit_code=course['course_code'])
enrollment_df = pd.DataFrame([enrollment])
enrollments = pd.concat([enrollments, enrollment_df], ignore_index=True)
return enrollments
courses1 = make_course_rows(users, courses, '001')
courses2 = make_course_rows(users, courses, '002')
courses = pd.concat([courses1, courses2], ignore_index=True)
instructors = enroll_instructors(users, courses, enrollments)
students = enroll_students(users, courses, enrollments)
enrollments = pd.concat([instructors, students], ignore_index=True)
print(courses)
print(enrollments)
courses.to_csv(output_path + '/courses.csv', index=False, header=False)
enrollments.to_csv(output_path + '/enrollments.csv', index=False, header=False)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment