示例#1
0
    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
示例#2
0
    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)
示例#3
0
 def create_course(self):
     course = CoursesFactory()
     db.session.commit()
     return course