Exemplo n.º 1
0
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())
Exemplo n.º 2
0
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')