def upload_course(user_id, course): course_id = course['id'] if (user_id is not None) and (user_id not in course['admins']): course['admins'].append(user_id) existing_course = JBoxDynConfig.get_course(CloudHost.INSTALL_ID, course_id) existing_admins = existing_course[ 'admins'] if existing_course is not None else [] existing_psets = existing_course[ 'problemsets'] if existing_course is not None else [] question_list = {} if (existing_course is not None) and ('questions' in existing_course): question_list = existing_course['questions'] if (existing_course is not None) and (user_id is not None) and ( user_id not in existing_admins): return -1 for pset in course['problemsets']: pset_id = pset['id'] if pset_id not in existing_psets: existing_psets.append(pset_id) question_ids = [q['id'] for q in pset['questions']] question_list[pset_id] = question_ids dt = datetime.datetime.now(pytz.utc) JBoxDynConfig.set_course( CloudHost.INSTALL_ID, course_id, { 'admins': course['admins'], 'problemsets': existing_psets, 'questions': question_list, 'create_time': JBoxUserV2.datetime_to_yyyymmdd(dt) }) for problemset in course['problemsets']: problemset_id = problemset['id'] questions = problemset['questions'] for question in questions: question_id = question['id'] answer = question['ans'] score = question['score'] if 'score' in question else 0 attempts = question['attempts'] if 'attempts' in question else 0 #nscore = question['nscore'] if 'nscore' in question else 0 try: ans = JBoxCourseHomework( course_id, problemset_id, question_id, JBoxCourseHomework.ANSWER_KEY, answer=answer, state=JBoxCourseHomework.STATE_CORRECT, create=True) except: ans = JBoxCourseHomework(course_id, problemset_id, question_id, JBoxCourseHomework.ANSWER_KEY) ans.set_answer(answer, JBoxCourseHomework.STATE_CORRECT) ans.set_score(score) ans.set_attempts(attempts) ans.save() for uid in course['admins']: user = JBoxUserV2(uid) courses_offered = user.get_courses_offered() if course['id'] not in courses_offered: courses_offered.append(course['id']) user.set_courses_offered(courses_offered) user.set_role(JBoxUserV2.ROLE_OFFER_COURSES) user.save() for uid in existing_admins: if uid in course['admins']: continue user = JBoxUserV2(uid) courses_offered = user.get_courses_offered() if course['id'] in courses_offered: courses_offered.remove(course['id']) user.set_courses_offered(courses_offered) user.set_role(JBoxUserV2.ROLE_OFFER_COURSES) user.save() return 0
def upload_course(user_id, course): course_id = course['id'] if (user_id is not None) and (user_id not in course['admins']): course['admins'].append(user_id) existing_course = JBoxDynConfig.get_course(CloudHost.INSTALL_ID, course_id) existing_admins = existing_course['admins'] if existing_course is not None else [] existing_psets = existing_course['problemsets'] if existing_course is not None else [] question_list = {} if (existing_course is not None) and ('questions' in existing_course): question_list = existing_course['questions'] if (existing_course is not None) and (user_id is not None) and (user_id not in existing_admins): return -1 for pset in course['problemsets']: pset_id = pset['id'] if pset_id not in existing_psets: existing_psets.append(pset_id) question_ids = [q['id'] for q in pset['questions']] question_list[pset_id] = question_ids dt = datetime.datetime.now(pytz.utc) JBoxDynConfig.set_course(CloudHost.INSTALL_ID, course_id, { 'admins': course['admins'], 'problemsets': existing_psets, 'questions': question_list, 'create_time': JBoxUserV2.datetime_to_yyyymmdd(dt) }) for problemset in course['problemsets']: problemset_id = problemset['id'] questions = problemset['questions'] for question in questions: question_id = question['id'] answer = question['ans'] score = question['score'] if 'score' in question else 0 #nscore = question['nscore'] if 'nscore' in question else 0 try: ans = JBoxCourseHomework(course_id, problemset_id, question_id, JBoxCourseHomework.ANSWER_KEY, answer=answer, state=JBoxCourseHomework.STATE_CORRECT, create=True) except: ans = JBoxCourseHomework(course_id, problemset_id, question_id, JBoxCourseHomework.ANSWER_KEY) ans.set_answer(answer, JBoxCourseHomework.STATE_CORRECT) ans.set_score(score) ans.save() for uid in course['admins']: user = JBoxUserV2(uid) courses_offered = user.get_courses_offered() if course['id'] not in courses_offered: courses_offered.append(course['id']) user.set_courses_offered(courses_offered) user.set_role(JBoxUserV2.ROLE_OFFER_COURSES) user.save() for uid in existing_admins: if uid in course['admins']: continue user = JBoxUserV2(uid) courses_offered = user.get_courses_offered() if course['id'] in courses_offered: courses_offered.remove(course['id']) user.set_courses_offered(courses_offered) user.set_role(JBoxUserV2.ROLE_OFFER_COURSES) user.save() return 0