示例#1
0
    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()
示例#2
0
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)
示例#3
0
    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)
示例#5
0
    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()
示例#6
0
    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()
示例#7
0
    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()