Пример #1
0
 def setUp(self):
     set_semester()
     self.sections = []
     self.sections.append(get_or_create_course_and_section("CIS-160-001", TEST_SEMESTER)[1])
     self.sections.append(get_or_create_course_and_section("CIS-160-002", TEST_SEMESTER)[1])
     self.sections.append(get_or_create_course_and_section("CIS-120-001", TEST_SEMESTER)[1])
     self.old_section = get_or_create_course_and_section("CIS-120-001", "2017C")[1]
Пример #2
0
    def setUp(self):
        self.user1 = User.objects.create_user(username="******")
        self.user2 = User.objects.create_user(username="******")

        self.inst_A = Instructor.objects.create(name="A")
        self.inst_a = Instructor.objects.create(name="a")
        self.inst_b = Instructor.objects.create(name="b")

        self.course1, self.section1, _, _ = get_or_create_course_and_section("CIS-120-001", "2020C")
        self.course2, self.section2, _, _ = get_or_create_course_and_section("CIS-120-001", "2019C")

        self.review1 = Review.objects.create(section=self.section1, instructor=self.inst_A)
        self.section1.instructors.add(self.inst_A)

        self.review2 = Review.objects.create(section=self.section2, instructor=self.inst_a)
        self.section2.instructors.add(self.inst_a)

        self.stats = dict()

        def stat(key, amt=1, element=None):
            """
            Helper function to keep track of how many rows we are changing
            """
            value = self.stats.get(key, 0)
            if element is None:
                self.stats[key] = value + amt
            else:
                self.stats.setdefault(key, []).append(element)

        self.stat = stat
Пример #3
0
 def setUp(self):
     self.ANTH_0020, self.ANTH_0020_001, _, _ = get_or_create_course_and_section(
         "ANTH-0020-001", TEST_SEMESTER
     )
     self.MUSC_0050, self.MUSC_0050_001, _, _ = get_or_create_course_and_section(
         "MUSC-0050-001", TEST_SEMESTER
     )
     self.AMTH = {"attribute_code": "AMTH", "attribute_desc": "MUSC M Tier Thre"}
     self.NUFC = {"attribute_code": "NUFC", "attribute_desc": "NUR-ADMIN-FCH Department"}
Пример #4
0
 def test_course_and_section_exist(self):
     """
     Make sure no duplite courses/sections get created, and that
     other values are overwritten accordingly.
     """
     get_or_create_course_and_section("CIS-120-001", TEST_SEMESTER)
     import_course_and_section("CIS-120-001", TEST_SEMESTER, "title", "CIS-120-001", self.stat)
     self.assertEqual(1, Course.objects.count())
     course = Course.objects.get()
     self.assertEqual(1, Section.objects.count())
     self.assertEqual("title", course.title)
     self.assertEqual(course.pk, course.primary_listing.pk)
Пример #5
0
 def setUp(self):
     set_semester()
     create_review("CIS-120-001", TEST_SEMESTER, "Instructor One",
                   {"instructor_quality": 4})
     create_review(
         "CIS-120-002",
         "2007C",
         "Instructor One",
         {"instructor_quality": 0},
         responses=0,
     )
     create_review(
         "CIS-120-001",
         "2007C",
         "No Responses Instructor",
         {"instructor_quality": 0},
         responses=0,
     )
     _, recitation, _, _ = get_or_create_course_and_section(
         "CIS-120-201", TEST_SEMESTER)
     recitation.activity = "REC"
     recitation.instructors.add(
         Instructor.objects.create(name="Instructor Two"))
     recitation.save()
     self.client = APIClient()
     self.client.force_login(User.objects.create_user(username="******"))
     self.instructor1 = Instructor.objects.get(name="Instructor One")
     self.instructor2 = Instructor.objects.get(name="Instructor Two")
     self.instructor_nores = Instructor.objects.get(
         name="No Responses Instructor")
Пример #6
0
def import_course_and_section(full_course_code, semester, course_title,
                              primary_section_code, stat):
    """
    Given course and section info, update/create objects.
    """
    primary_listing = None
    if primary_section_code:
        try:
            dept, ccode, _ = separate_course_code(primary_section_code)
        except ValueError:
            stat("invalid_primary_section_id")
            return
        primary_listing, _ = get_or_create_course(dept, ccode, semester)

    try:
        course, section, _, _ = get_or_create_course_and_section(
            full_course_code,
            semester,
            course_defaults={
                "primary_listing": primary_listing,
                "title": course_title or ""
            },
        )
    except ValueError:
        stat("invalid_section_id")
        return None, None

    # Update course title if one isn't already set.
    if course_title and not course.title:
        course.title = course_title
        course.save()
        stat("courses_updated")

    return course, section
Пример #7
0
 def test_has_none(self):
     _, section, _, _ = get_or_create_course_and_section(
         "CIS-120-001", TEST_SEMESTER)
     instructor, _ = Instructor.objects.get_or_create(name="Rajiv Gandhi")
     section.instructors.add(instructor)
     recompute_precomputed_fields()
     self.assertFalse(Section.objects.get(id=section.id).has_reviews)
Пример #8
0
 def test_create_course(self):
     course, section, _, _ = get_or_create_course_and_section(
         "CIS 120 001", TEST_SEMESTER)
     self.assertEqual("CIS-120-001", section.full_code)
     self.assertEqual(Course.objects.count(), 2)
     self.assertEqual(course.department.code, "CIS")
     self.assertEqual(course.code, "120")
     self.assertEqual(section.code, "001")
Пример #9
0
 def setUp(self):
     self.instructor = Instructor(name="Teacher")
     self.instructor.save()
     self.review = Review(
         section=get_or_create_course_and_section("CIS-120-001", TEST_SEMESTER)[1],
         instructor=self.instructor,
     )
     self.review.save()
Пример #10
0
 def setUp(self):
     self.ANTH_0020, self.ANTH_0020_001, _, _ = get_or_create_course_and_section(
         "ANTH-0020-001", TEST_SEMESTER
     )
     self.MUSC_0050, self.MUSC_0050_001, _, _ = get_or_create_course_and_section(
         "MUSC-0050-001", TEST_SEMESTER
     )
     self.PHL = {
         "restriction_code": "PHL",
         "restriction_type": "Campus",
         "restriction_desc": "Philly Campus",
     }
     self.DOLLAR = {
         "restriction_code": "DOLLAR",
         "restriction_type": "Cohort",
         "restriction_desc": "Exclusive for cohort dollar",
     }
Пример #11
0
    def test_flns_not_shared(self):
        _, cis_1600_001, _, _ = get_or_create_course_and_section("CIS-1600-001", TEST_SEMESTER)

        rajiv_no_middle = Instructor.objects.create(name="Rajiv Gandhi")
        cis_1600_001.instructors.add(rajiv_no_middle)

        Instructor.objects.create(name="Rajiv C. Gandhi")

        self.assertEqual([], strategies["first-last-name-sections"]())
Пример #12
0
    def setUp(self):
        self.out = StringIO()
        self.err = StringIO()

        self.user1 = User.objects.create_user(username="******")
        self.user2 = User.objects.create_user(username="******")

        self.inst_A = Instructor.objects.create(name="A")
        self.inst_a = Instructor.objects.create(name="a")
        self.inst_b = Instructor.objects.create(name="b")

        self.course1, self.section1, _, _ = get_or_create_course_and_section("CIS-120-001", "2020C")
        self.course2, self.section2, _, _ = get_or_create_course_and_section("CIS-120-001", "2019C")

        self.review1 = Review.objects.create(section=self.section1, instructor=self.inst_A)
        self.section1.instructors.add(self.inst_A)

        self.review2 = Review.objects.create(section=self.section2, instructor=self.inst_a)
        self.section2.instructors.add(self.inst_a)
Пример #13
0
 def test_has_one(self):
     _, section, _, _ = get_or_create_course_and_section(
         "CIS-120-001", TEST_SEMESTER)
     instructor, _ = Instructor.objects.get_or_create(name="Rajiv Gandhi")
     section.instructors.add(instructor)
     import_review(section,
                   instructor,
                   None,
                   10,
                   None, {"instructor_quality": 4},
                   lambda x, y=None: None)
     recompute_precomputed_fields()
     self.assertTrue(Section.objects.get(id=section.id).has_reviews)
Пример #14
0
def create_review(section_code,
                  semester,
                  instructor_name,
                  bits,
                  responses=100):
    _, section, _, _ = get_or_create_course_and_section(section_code, semester)
    instructor, _ = Instructor.objects.get_or_create(name=instructor_name)
    section.instructors.add(instructor)
    import_review(section,
                  instructor,
                  None,
                  responses,
                  None,
                  bits,
                  lambda x, y=None: None)
    recompute_precomputed_fields()
Пример #15
0
    def test_reviews_exist_force(self, mock_get_files, mock_close_files):
        mock_get_files.return_value = [self.summary_fo]

        course, section, _, _ = get_or_create_course_and_section("CIS 120001", TEST_SEMESTER)
        instructor = Instructor.objects.create(name="name")
        r = Review.objects.create(section=section, instructor=instructor)

        management.call_command(
            self.COMMAND_NAME,
            "hi.zip",
            "--zip",
            f"--semester={TEST_SEMESTER}",
            "--force",
            stdout=self.out,
            stderr=self.err,
            show_progress_bar=False,
        )
        self.assertEqual(1, Review.objects.count())
        self.assertNotEqual(r.pk, Review.objects.get().pk)
Пример #16
0
def create_mock_data(code, semester, meeting_days="MWF", start=1100, end=1200):
    course, section, _, _ = get_or_create_course_and_section(code, semester)
    course.description = "This is a fake class."
    course.save()
    section.credits = 1
    section.status = "O"
    section.activity = "LEC"
    section.save()
    m = [
        {
            "building_code": "LLAB",
            "room_code": "10",
            "days": meeting_days,
            "begin_time_24": start,
            "begin_time": time_str(start),
            "end_time_24": end,
            "end_time": time_str(end),
        }
    ]
    set_meetings(section, m)
    return course, section
Пример #17
0
 def test_no_reviews(self):
     get_or_create_course_and_section("CIS-120-001", TEST_SEMESTER)
     self.assertEqual(
         404,
         self.client.get(reverse("course-reviews",
                                 args=["CIS-120"])).status_code)
Пример #18
0
 def assertCourseSame(self, s):
     course, section, _, _ = get_or_create_course_and_section(
         s, TEST_SEMESTER)
     self.assertEqual(course, self.c, s)
     self.assertEqual(section, self.s, s)