Ejemplo n.º 1
0
def course_info_route():
    course_token = request.args.get('course_token')
    course_owner = request.args.get('owner')
    course_id = Course.get_course_id(course_token, EXPIRY_INTERVAL * 2)
    if not all((course_id, course_owner, len(course_owner) > 0)):
        return error_response('Invalid course specified')
    course = db.session.query(Course).filter_by(id=long(course_id)).first()
    if course is None:
        return error_response('No course with that ID exists')
    course_detail = {
        'paper_name':
        course.name,
        'paper_code':
        course_token,
        'icon':
        course.logo_location,
        'duration':
        course.duration_in_minutes,
        'instructor':
        course.lecturer_in_charge,
        'departments':
        jsonify_departments(course.departments),
        'randomize':
        course.randomize_questions,
        'owner':
        course_owner,
        'reply_to':
        url_for('auth.post_secure_sesd_route', _external=True),
        'url':
        url_for('auth.get_paper_route',
                url=coursify(course.id, course.quiz_filename),
                _external=True)
    }
    return success_response(course_detail)
Ejemplo n.º 2
0
def post_secure_sesd_route():
    try:
        data = request.get_json()
        course_token = data.get('course_id', None)
        date_taken = data.get('date_taken', None)
        answer_pair = data.get('answers')
        owner = data.get('owner')
        course_id = Course.get_course_id(course_token,EXPIRY_INTERVAL)
        if not all( (course_id, date_taken, answer_pair, owner, ) ):
            return respond_back(ERROR, 'One of the primary arguments are missing')
        repo_owner = db.session.query(User).filter_by(username=owner).first()
        if course_id is None or repo_owner is None:
            return respond_back(ERROR,'This course does not exist')
        course_taken = db.session.query(ExamTaken).filter_by(course_id=course_id,
                                participant_id=current_user.id).first()
        if course_taken is not None:
            return respond_back(ERROR, 'You have already taken this examination')
        # needed to verify JSON object's correctness for the answer
        answer_object = MyJSONObjectWriter()
        json.dump(answer_pair, answer_object, skipkeys=True, indent=2, separators=(',', ': '))
        other_data = answer_object.get_buffer()
        
        solution_data = { 'user_id': current_user.id, 'owner_id': repo_owner.id,
                        'course_id': course_id, 'data': other_data, 
                        'date_taken': date_taken }

        submit_paper_for_marking(current_user.email, json.dumps(solution_data))
        return respond_back(SUCCESS, 'OK')
    except BadRequest:
        return respond_back(ERROR, 'No data was specified')