def create_student_demand(self): student_schedule = {} for student_id in self.student_ids: student_schedule = [] for semester_id in self.semesters.keys(): if len(student_schedule) >= 11: continue for _ in range(random.choice([1, 1, 1, 2])): course_id = None while(True): proposed_course = random.choice(list(self.courses.keys())) if proposed_course in student_schedule: continue if proposed_course in self.prereq_reversed.keys() and self.prereq_reversed[proposed_course] not in student_schedule: continue course_id = proposed_course break db_demand = StudentDemand(student_id=student_id, course_id=course_id, semester_id=semester_id, is_current=True) db_session.add(db_demand) db_session.flush() student_schedule.append(course_id) db_session.commit()
def solve(): r = requests.post( 'http://ec2-54-86-66-135.compute-1.amazonaws.com:8080/solve', json=get_solver_context()) if r.status_code != 200 or 'error' in r.json(): return jsonify(error=True) # Create this run ID o = OptimizationRun(created_by=g.user_id) db_session.add(o) db_session.flush() # Configure everything data = r.json() for a in data['assignments']: s = StudentAssignment(student_id=a['student'], semester_id=a['semester'], course_id=a['course'], run_id=o.id) db_session.add(s) for a in data['instructors']: s = InstructorAssignment(instructor_id=a['instructor_id'], semester_id=a['semester_id'], course_id=a['course_id'], run_id=o.id) db_session.add(s) db_session.commit() return jsonify(updated=True, run_id=o.id)
def create_users(self): for u in range(self.num_students): first_name = random.choice(first_names) last_name = random.choice(last_names) username = '******'.format(first_name[0], last_name[1:], random.randint(1, 1000)).lower() db_user = User(first_name=first_name.capitalize(), last_name=last_name.capitalize(), username=username, password_hash=hashlib.sha256(username.encode()).hexdigest(), role='student') db_session.add(db_user) db_session.flush() self.student_ids.append(db_user.id) for u in range(self.num_instructors): first_name = random.choice(first_names) last_name = random.choice(last_names) username = '******'.format(first_name[0], last_name[1:], random.randint(1, 1000)).lower() db_user = User(first_name=first_name.capitalize(), last_name=last_name.capitalize(), username=username, password_hash=hashlib.sha256(username.encode()).hexdigest(), role='TA') db_session.add(db_user) db_session.flush() self.instructor_ids.append(db_user.id) db_session.commit()
def solve(): r = requests.post('http://ec2-54-86-66-135.compute-1.amazonaws.com:8080/solve', json=get_solver_context()) if r.status_code != 200 or 'error' in r.json(): return jsonify(error=True) # Create this run ID o = OptimizationRun(created_by=g.user_id) db_session.add(o) db_session.flush() # Configure everything data = r.json() for a in data['assignments']: s = StudentAssignment(student_id=a['student'], semester_id=a['semester'], course_id=a['course'], run_id=o.id) db_session.add(s) for a in data['instructors']: s = InstructorAssignment(instructor_id=a['instructor_id'], semester_id=a['semester_id'], course_id=a['course_id'], run_id=o.id) db_session.add(s) db_session.commit() return jsonify(updated=True, run_id=o.id)
def create_prerequisites(self): with open('optimizer/resources/static/course_dependencies.csv', 'rU') as prereq_file: prereq_reader = csv.DictReader(prereq_file) for p in prereq_reader: db_prereq = CourseDependency(first_course=p['prereq_course_ID'], second_course=p['dependent_course_ID']) db_session.add(db_prereq) db_session.flush() self.prerequisites_reversed[db_prereq.second_course] = db_prereq.first_course db_session.commit()
def create_semesters(self): with open('optimizer/resources/static/semesters.csv', 'rU') as semester_file: semester_reader = csv.DictReader(semester_file) for s in semester_reader: db_semester = Semester(name=s['semester_name'], start_date=s['start_date'], end_date=s['end_date']) db_session.add(db_semester) db_session.flush() self.semesters[db_semester.id] = db_semester.name db_session.commit()
def create_courses(self): with open('optimizer/resources/static/courses.csv', 'rU') as course_file: course_reader = csv.DictReader(course_file) for c in course_reader: db_course = Course(course_name=c['course_name'], course_number=c['course_number'], is_fall=(c['fall_term'] is '1'), is_spring=(c['spring_term'] is '1'), is_summer=(c['summer_term'] is '1'), availability_string=c['availability']) db_session.add(db_course) db_session.flush() self.courses[db_course.id] = dict(is_fall=db_course.is_fall, is_spring=db_course.is_spring, is_summer=db_course.is_summer) db_session.commit()