def main(): bb = BbRest(key, secret, bbURL) userName = '******' courseId = 'dev-bs' user = bb.GetUser(userId=userName).json() # print(user.request.url) print(user) print(f"\nuser ID: {user['userName']} \ email: {user['contact']['email']}") course = bb.GetCourse(courseId=courseId).json() print(f"course ID: {course['id']} \ external ID: {course['externalId']}") memberships = bb.GetCourseMemberships(courseId=courseId).json() print('\nmemberships:', memberships) enrollments = bb.GetUserMemberships(userId=userName).json() print('\nuser enrollments:', enrollments) enrollment = bb.GetMembership(courseId=courseId, userId=userName).json() print('\ncourse user enrollment:', enrollment) new_user_data = { 'externalId': 'devcon19_user', 'userName': '******', 'name': { 'given': 'DevCon19', 'family': 'User' }, 'password': '******', 'contact': { 'email': '*****@*****.**' } } user_name = new_user_data['userName'] del_user = bb.DeleteUser(user_name) print(f'\nDeleted User: {del_user}') new_user = bb.CreateUser(payload=new_user_data) print('\n Created new user:', new_user.json())
def courses(request): task = request.GET.get('task') searchBy = request.GET.get('searchBy') searchValue = request.GET.get('searchValue') if (searchValue is not None): searchValue = searchValue.strip() print("SEARCHBY: ", searchBy) print("SEARCHVALUE: ", searchValue) print("TASK: ", task) bb_json = request.session.get('bb_json') if (bb_json is None): bb = BbRest(KEY, SECRET, f"https://{LEARNFQDN}") bb_json = jsonpickle.encode(bb) print('pickled BbRest putting it on session') request.session['bb_json'] = bb_json request.session['target_view'] = 'courses' return HttpResponseRedirect(reverse('get_auth_code')) else: print('got BbRest from session') bb = jsonpickle.decode(bb_json) if bb.is_expired(): print('expired token') request.session['bb_json'] = None whoami(request) bb.supported_functions() # This and the following are required after bb.method_generator() # unpickling the pickled object. print(f'expiration: {bb.expiration()}') if (task == 'search'): #Process request... print(f"COURSE REQUEST: ACTION {task}") searchValue = request.GET.get('searchValue') if (searchValue is not None): searchValue = searchValue.strip() print(f"COURSE REQUEST: CRS: {searchValue}") print(f"Process by {searchBy}") if (searchBy == 'externalId'): crs = "externalId:" + searchValue print(f"course pattern: {crs}") elif (searchBy == 'primaryId'): crs = searchValue print(f"course pattern: {crs}") elif (searchBy == 'courseId'): crs = "courseId:" + searchValue print(f"course pattern: {crs}") resp = bb.GetCourse( courseId=crs, params={ 'fields': 'id, courseId, externalId, name, availability.available, dataSourceId, created' }, sync=True) if (resp.status_code == 200): course_json = resp.json() dskresp = bb.GetDataSource( dataSourceId=course_json['dataSourceId'], sync=True) dsk_json = dskresp.json() course_json['dataSourceId'] = dsk_json['externalId'] course_json['searchValue'] = searchValue course_json['searchBy'] = searchBy dskresp = bb.GetDataSources(params={'fields': 'id, externalId'}, sync=True) dsks_json = dskresp.json() print("DSKS:\n", dsks_json["results"]) dsks = dsks_json["results"] dsks = sortDsk(dsks) print("SIZE OF DSK LIST:", len(dsks)) context = { 'course_json': course_json, 'dsks_json': dsks, } else: error_json = resp.json() print(f"RESPONSE:\n", error_json) context = { 'error_json': error_json, } return render(request, 'courses.html', context=context) if (task == 'process'): print(f"COURSE REQUEST: ACTION {task}") print(f"Process by {searchBy}") print('Request:\n ') print(request) payload = {} if (request.GET.get('isAvailabilityUpdateRequired1')): if (request.GET.get('isAvailabilityUpdateRequired1') == 'true'): payload = { 'availability': { "available": request.GET.get('selectedAvailability') } } if (request.GET.get('isDataSourceKeyUpdateRequired1')): if (request.GET.get('isDataSourceKeyUpdateRequired1') == 'true'): payload["dataSourceId"] = request.GET.get( 'selectedDataSourceKey') print("PAYLOAD\n") for x, y in payload.items(): print(x, y) # Build and make bb request... if (searchBy == 'externalId'): crs = "externalId:" + searchValue elif (searchBy == 'primaryId'): crs = searchValue print(f"course pattern: {crs}") elif (searchBy == 'courseId'): crs = "courseId:" + searchValue print(f"course pattern: {crs}") print(f"course pattern: {crs}") resp = bb.UpdateCourse( courseId=crs, payload=payload, params={ 'fields': 'id, courseId, externalId, name, availability.available, dataSourceId, created' }, sync=True) if (resp.status_code == 200): result_json = resp.json() #return actual error dskresp = bb.GetDataSource( dataSourceId=result_json['dataSourceId'], sync=True) dsk_json = dskresp.json() result_json['dataSourceId'] = dsk_json['externalId'] context = { 'result_json': result_json, } else: error_json = resp.json() print(f"RESPONSE:\n", error_json) context = { 'error_json': error_json, } return render(request, 'courses.html', context=context) return render(request, 'courses.html')