def add_course(self, num_students=5, num_questions=1, num_groups=0, num_answers='#'): self.course = CoursesFactory() self.instructor = UsersFactory(usertypeforsystem=DefaultFixture.SYS_ROLE_INSTRUCTOR) self.course.enroll(self.instructor, UserTypesForCourse.TYPE_INSTRUCTOR) self.ta = UsersFactory(usertypeforsystem=DefaultFixture.SYS_ROLE_NORMAL) self.course.enroll(self.ta, UserTypesForCourse.TYPE_TA) self.add_students(num_students) self.add_questions(num_questions) # create a shortcut for first question as it is frequently used self.question = self.questions[0] self.add_groups(num_groups) self.add_answers(num_answers) return self
def __init__(self): # initialize with default values in cases of DefaultFixture being unavailable DEFAULT_CRITERIA = DefaultFixture.DEFAULT_CRITERIA if DefaultFixture.DEFAULT_CRITERIA else \ Criteria.query.filter_by(name="Which is better?").first() SYS_ROLE_INSTRUCTOR = DefaultFixture.SYS_ROLE_INSTRUCTOR if DefaultFixture.SYS_ROLE_INSTRUCTOR else \ UserTypesForSystem.query.filter_by(name=UserTypesForSystem.TYPE_INSTRUCTOR).first() SYS_ROLE_NORMAL = DefaultFixture.SYS_ROLE_NORMAL if DefaultFixture.SYS_ROLE_NORMAL else \ UserTypesForSystem.query.filter_by(name=UserTypesForSystem.TYPE_NORMAL).first() COURSE_ROLE_INSTRUCTOR = DefaultFixture.COURSE_ROLE_INSTRUCTOR if DefaultFixture.COURSE_ROLE_INSTRUCTOR else \ UserTypesForCourse.query.filter_by(name=UserTypesForCourse.TYPE_INSTRUCTOR).first() COURSE_ROLE_STUDENT = DefaultFixture.COURSE_ROLE_STUDENT if DefaultFixture.COURSE_ROLE_STUDENT else \ UserTypesForCourse.query.filter_by(name=UserTypesForCourse.TYPE_STUDENT).first() # create courses self.courses = [] for course_name in self.COURSE_NAMES: course = CoursesFactory(name=course_name, description=course_name + " Course Description") self.courses.append(course) # insert default criteria into each course for course in self.courses: CriteriaAndCoursesFactory(criterion=DEFAULT_CRITERIA, course=course) # create instructors for instructor_name in self.INSTRUCTOR_NAMES: self.instructor = UsersFactory( username=instructor_name, usertypeforsystem=SYS_ROLE_INSTRUCTOR) # create students self.students = [] for student_name in self.STUDENT_NAMES: student = UsersFactory(username=student_name, usertypeforsystem=SYS_ROLE_NORMAL) self.students.append(student) # enrol students and instructor in half of the courses, also create questions and answers skip = True generator = TechnobabbleGenerator() content = "This is some place holder content for this question. Yay!" for course in self.courses: skip = not skip if skip: continue # enrol instructor CoursesAndUsersFactory(user=self.instructor, course=course, usertypeforcourse=COURSE_ROLE_INSTRUCTOR) # enrol students for student in self.students: CoursesAndUsersFactory(user=student, course=course, usertypeforcourse=COURSE_ROLE_STUDENT) # create 5 questions by the instructor for i in range(5): minutes = random.randint(0, 59) created = datetime.utcnow() - timedelta(days=1, minutes=minutes) post = PostsFactory(course=course, user=self.instructor, content=content, created=created) postforquestion = PostsForQuestionsFactory( post=post, title=generator.get_question()) # insert default criteria into question CriteriaAndPostsForQuestionsFactory(criterion=DEFAULT_CRITERIA, question=postforquestion) # create answers by each student for this question for student in self.students: minutes = random.randint(0, 59) created = datetime.utcnow() - timedelta(minutes=minutes) post = PostsFactory(course=course, user=student, content=generator.get_answer(), created=created) PostsForAnswersFactory(post=post, question=postforquestion)
def create_course(self): course = CoursesFactory() db.session.commit() return course