コード例 #1
0
def index(request):
    canvas_user_id = request.LTI['custom_canvas_user_id']
    sis_account_id = request.LTI['custom_canvas_account_sis_id']
    ci_filters = {key: request.GET.get(key, '') for key in COURSE_INSTANCE_FILTERS}
    (account_type, _) = canvas_api_accounts.parse_canvas_account_id(sis_account_id)
    schools = []
    terms = []
    departments = []
    course_groups = []
    school = None

    if account_type in canvas_api_accounts.ACCOUNT_TYPES:
        # We are in the context of a SIS type account, so limit options to that context
        school_id = sis_account_id
        if account_type == canvas_api_accounts.ACCOUNT_TYPE_DEPARTMENT:
            department = canvas_api_accounts.get_account_by_sis_account_id(canvas_user_id, sis_account_id)
            department_id = department['sis_account_id']
            school_id = department['parent_account_id']
            ci_filters[canvas_api_accounts.ACCOUNT_TYPE_COURSE_GROUP] = department_id
            departments.append(get_department_data_for_school(canvas_user_id, school_id, department_id))
        elif account_type == canvas_api_accounts.ACCOUNT_TYPE_COURSE_GROUP:
            course_group = canvas_api_accounts.get_account_by_sis_account_id(canvas_user_id, sis_account_id)
            course_group_id = course_group['sis_account_id']
            school_id = course_group['parent_account_id']
            ci_filters[canvas_api_accounts.ACCOUNT_TYPE_COURSE_GROUP] = course_group_id
            course_groups.append(get_course_group_data_for_school(canvas_user_id, school_id, course_group_id))
        school = get_school_data_for_user(canvas_user_id, school_id)
        ci_filters[canvas_api_accounts.ACCOUNT_TYPE_SCHOOL] = school['id']
        schools.append(school)
    else:
        # We are outside the context of a SIS type account, so show all schools
        # that the user has permission to create courses for
        schools = get_school_data_for_user(canvas_user_id)
        school_sis_account_id = ci_filters.get('school')
        if school_sis_account_id:
            school = get_school_data_for_user(canvas_user_id, school_sis_account_id)

    if len(schools) == 0:
        return redirect('not_authorized')

    if school:
        # Populate term, department, and course_group filter options if we already have a school
        school_sis_account_id = school['id']
        terms = get_term_data_for_school(school_sis_account_id)
        if not departments and not course_groups:
            departments = get_department_data_for_school(canvas_user_id, school_sis_account_id)
            course_groups = get_course_group_data_for_school(canvas_user_id, school_sis_account_id)

    return render(request, 'bulk_site_creation/index.html', {
        'filters': ci_filters,
        'schools': schools,
        'terms': terms,
        'departments': departments,
        'course_groups': course_groups
    })
コード例 #2
0
def get_course_group_data_for_school(canvas_user_id, school_sis_account_id, course_group_sis_account_id=None):
    school_account = canvas_api_accounts_helper.get_account_by_sis_account_id(canvas_user_id, school_sis_account_id)
    course_groups = []
    accounts = canvas_api_accounts_helper.get_course_group_accounts(
        canvas_user_id,
        school_account['id'],
        canvas_api_accounts_helper.ACCOUNT_PERMISSION_MANAGE_COURSES
    )
    for account in accounts:
        account_id = account['sis_account_id']
        course_group = {
            'id': account_id,
            'name': account['name']
        }
        if course_group_sis_account_id and course_group_sis_account_id == account_id:
            return course_group
        else:
            course_groups.append(course_group)
    return course_groups
コード例 #3
0
def get_department_data_for_school(canvas_user_id, school_sis_account_id, department_sis_account_id=None):
    school_account = canvas_api_accounts_helper.get_account_by_sis_account_id(canvas_user_id, school_sis_account_id)
    departments = []
    accounts = canvas_api_accounts_helper.get_department_accounts(
        canvas_user_id,
        school_account['id'],
        canvas_api_accounts_helper.ACCOUNT_PERMISSION_MANAGE_COURSES
    )
    for account in accounts:
        account_id = account['sis_account_id']
        department = {
            'id': account_id,
            'name': account['name']
        }
        if department_sis_account_id and department_sis_account_id == account_id:
            return department
        else:
            departments.append(department)
    return departments