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)
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')