示例#1
0
 def test_crosslistings_exists_full_code(self):
     get_or_create_course("CIS", "120", "2020C")
     b, _ = get_or_create_course("OIDD", "291", "2020C")
     get_or_create_course("LGST",
                          "291",
                          "2020C",
                          defaults={"primary_listing": b})
     d, _ = get_or_create_course("OIDD", "291", TEST_SEMESTER)
     get_or_create_course("MGMT",
                          "291",
                          TEST_SEMESTER,
                          defaults={"primary_listing": d})
     get_or_create_course("OPIM",
                          "291",
                          TEST_SEMESTER,
                          defaults={"primary_listing": d})
     a_db = Course.objects.get(full_code="CIS-120")
     b_db = Course.objects.get(full_code="OIDD-291", semester="2020C")
     c_db = Course.objects.get(full_code="LGST-291")
     d_db = Course.objects.get(full_code="OIDD-291", semester=TEST_SEMESTER)
     e_db = Course.objects.get(full_code="OPIM-291")
     f_db = Course.objects.get(full_code="MGMT-291")
     t1 = Topic.objects.get(courses__full_code="CIS-120")
     t2 = Topic.objects.filter(courses__full_code="OIDD-291")[:1].get()
     self.assertEqual(a_db.topic, t1)
     self.assertEqual(b_db.topic, t2)
     self.assertEqual(c_db.topic, t2)
     self.assertEqual(d_db.topic, t2)
     self.assertEqual(e_db.topic, t2)
     self.assertEqual(f_db.topic, t2)
     self.assertEqual(t1.most_recent, a_db)
     self.assertEqual(t2.most_recent, d_db)
示例#2
0
    def setUp(self):
        set_semester()
        get_or_create_course(
            "CIS", "120",
            "2012A")  # dummy course to make sure we're filtering by semester
        self.course, _ = get_or_create_course("CIS", "120", TEST_SEMESTER)
        self.course2, _ = get_or_create_course("CIS", "125", TEST_SEMESTER)
        self.department = Department.objects.get(code="CIS")

        self.req1 = PreNGSSRequirement(semester=TEST_SEMESTER,
                                       school="SAS",
                                       code="TEST1",
                                       name="Test 1")
        self.req2 = PreNGSSRequirement(semester=TEST_SEMESTER,
                                       school="SAS",
                                       code="TEST2",
                                       name="Test 2")
        self.req3 = PreNGSSRequirement(semester="XXXXX",
                                       school="SAS",
                                       code="TEST1",
                                       name="Test 1+")

        self.req1.save()
        self.req2.save()
        self.req3.save()

        self.req1.departments.add(self.department)
        self.req1.overrides.add(self.course2)
        self.req2.courses.add(self.course)
        self.req2.courses.add(self.course2)
        self.req3.departments.add(self.department)

        self.client = APIClient()
示例#3
0
 def test_merge_with(self):
     a, _ = get_or_create_course("CIS", "120", "2020C")
     t = Topic.objects.get()
     b, _ = get_or_create_course("CIS", "1200", "2021C")
     t.merge_with(b.topic)
     c, _ = get_or_create_course("OIDD", "291", TEST_SEMESTER)
     get_or_create_course("LGST",
                          "291",
                          TEST_SEMESTER,
                          defaults={"primary_listing": c})
     t1 = Topic.objects.filter(courses__full_code="CIS-120")[:1].get()
     t2 = Topic.objects.filter(courses__full_code="OIDD-291")[:1].get()
     t_merged = t1.merge_with(t2)
     a_db = Course.objects.get(full_code="CIS-120")
     b_db = Course.objects.get(full_code="CIS-1200")
     c_db = Course.objects.get(full_code="OIDD-291")
     d_db = Course.objects.get(full_code="LGST-291")
     t_merged_db = Topic.objects.filter(
         courses__full_code="CIS-120")[:1].get()
     self.assertEqual(t_merged, t_merged_db)
     self.assertEqual(a_db.topic, t_merged_db)
     self.assertEqual(b_db.topic, t_merged_db)
     self.assertEqual(c_db.topic, t_merged_db)
     self.assertEqual(d_db.topic, t_merged_db)
     self.assertEqual(t_merged.most_recent, c)
     self.assertEqual(t_merged_db.most_recent, c_db)
示例#4
0
 def test_two_paragraphs(self):
     get_or_create_course("CIS", "120", TEST_SEMESTER)
     rows = [
         {"COURSE_ID": "CIS120", "PARAGRAPH_NUMBER": "2", "COURSE_DESCRIPTION": "world!"},
         {"COURSE_ID": "CIS120", "PARAGRAPH_NUMBER": "1", "COURSE_DESCRIPTION": "Hello"},
     ]
     import_description_rows(len(rows), iter(rows), show_progress_bar=False)
     self.assertEqual(1, Course.objects.count())
     self.assertEqual("Hello\nworld!", Course.objects.get().description)
示例#5
0
 def test_existing_full_code(self):
     a, _ = get_or_create_course("CIS", "120", "2020C")
     b, _ = get_or_create_course("CIS", "120", TEST_SEMESTER)
     a_db = Course.objects.get(full_code="CIS-120", semester="2020C")
     b_db = Course.objects.get(full_code="CIS-120", semester=TEST_SEMESTER)
     t = Topic.objects.get()
     self.assertEqual(a.topic, t)
     self.assertEqual(a_db.topic, t)
     self.assertEqual(b.topic, t)
     self.assertEqual(b_db.topic, t)
     self.assertEqual(t.most_recent, b_db)
示例#6
0
    def test_two_semesters(self):
        get_or_create_course("CIS", "120", TEST_SEMESTER)
        get_or_create_course("CIS", "120", "3008A")

        rows = [{"COURSE_ID": "CIS120", "PARAGRAPH_NUMBER": "1", "COURSE_DESCRIPTION": "Hello"}]
        import_description_rows(len(rows), iter(rows), show_progress_bar=False)
        self.assertEqual(2, Course.objects.count())
        c1 = Course.objects.get(semester=TEST_SEMESTER)
        c2 = Course.objects.get(semester="3008A")
        for c in [c1, c2]:
            self.assertEqual("Hello", c.description)
示例#7
0
 def test_two_courses(self):
     get_or_create_course("CIS", "120", TEST_SEMESTER)
     get_or_create_course("CIS", "121", TEST_SEMESTER)
     rows = [
         {"COURSE_ID": "CIS120", "PARAGRAPH_NUMBER": "1", "COURSE_DESCRIPTION": "World"},
         {"COURSE_ID": "CIS121", "PARAGRAPH_NUMBER": "1", "COURSE_DESCRIPTION": "Hello"},
     ]
     import_description_rows(len(rows), iter(rows), show_progress_bar=False)
     c120 = Course.objects.get(code="120")
     c121 = Course.objects.get(code="121")
     self.assertEqual("World", c120.description)
     self.assertEqual("Hello", c121.description)
示例#8
0
 def test_set_primary_listing_id(self):
     get_or_create_course("CIS", "120", TEST_SEMESTER)
     b, _ = get_or_create_course("OIDD", "291", TEST_SEMESTER)
     c, _ = get_or_create_course("LGST",
                                 "291",
                                 TEST_SEMESTER,
                                 defaults={"primary_listing_id": b.id})
     b_db = Course.objects.get(full_code="OIDD-291")
     c_db = Course.objects.get(full_code="LGST-291")
     self.assertEqual(b.primary_listing, b)
     self.assertEqual(c.primary_listing, b)
     self.assertEqual(b_db.primary_listing, b_db)
     self.assertEqual(c_db.primary_listing, b_db)
示例#9
0
 def test_delete_all(self):
     a, _ = get_or_create_course("CIS", "120", TEST_SEMESTER)
     b, _ = get_or_create_course("CIS", "160", TEST_SEMESTER)
     c, _ = get_or_create_course("CIS", "121", TEST_SEMESTER)
     a.topic.delete()
     a.delete()
     b.topic.delete()
     b.delete()
     c.topic.delete()
     c.delete()
     d, _ = get_or_create_course("CIS", "240", TEST_SEMESTER)
     d_db = Course.objects.get(full_code="CIS-240")
     self.assertEqual(d.primary_listing, d)
     self.assertEqual(d_db.primary_listing, d_db)
示例#10
0
 def test_new(self):
     a, _ = get_or_create_course("CIS", "120", TEST_SEMESTER)
     a_db = Course.objects.get(full_code="CIS-120")
     t = Topic.objects.get()
     self.assertEqual(a.topic, t)
     self.assertEqual(a_db.topic, t)
     self.assertEqual(t.most_recent, a_db)
示例#11
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
示例#12
0
 def test_load_descriptions_all_semester(self, mock_get_files, mock_close_files):
     mock_get_files.return_value = [self.summary_fo, self.description_fo]
     get_or_create_course("CIS", "120", "3008A")
     res = management.call_command(
         self.COMMAND_NAME,
         "hi.zip",
         "--zip",
         "--all",
         "--import-descriptions",
         stdout=self.out,
         stderr=self.err,
         show_progress_bar=False,
     )
     self.assertEqual(0, res)
     self.assertEqual("Hello, world!", Course.objects.get(semester=TEST_SEMESTER).description)
     self.assertEqual("Hello, world!", Course.objects.get(semester="3008A").description)
示例#13
0
    def test_section_with_existing_description(self):
        get_or_create_course("CIS", "120", TEST_SEMESTER)
        get_or_create_course("CIS", "120", "3008A")
        c, _ = get_or_create_course("CIS", "120", "3005A")
        c.description = "TILL 3005"
        c.save()

        rows = [{"COURSE_ID": "CIS120", "PARAGRAPH_NUMBER": "1", "COURSE_DESCRIPTION": "Hello"}]
        import_description_rows(len(rows), iter(rows), show_progress_bar=False)
        self.assertEqual(3, Course.objects.count())
        c1 = Course.objects.get(semester=TEST_SEMESTER)
        c2 = Course.objects.get(semester="3008A")
        for c in [c1, c2]:
            self.assertEqual("Hello", c.description)
        c3 = Course.objects.get(semester="3005A")
        self.assertEqual("TILL 3005", c3.description)
示例#14
0
    def test_satisfying_courses(self):
        # make it so req1 has one department-level requirement, one course-level one,
        # and one override.
        c1, _ = get_or_create_course("MEAM", "101", TEST_SEMESTER)
        self.req1.courses.add(c1)
        courses = self.req1.satisfying_courses.all()
        self.assertEqual(2, len(courses))

        self.assertCoursesEqual([self.course, c1], courses)
示例#15
0
 def test_crosslistings(self):
     a, _ = get_or_create_course("CIS", "120", TEST_SEMESTER)
     b, _ = get_or_create_course("OIDD", "291", TEST_SEMESTER)
     c, _ = get_or_create_course("LGST",
                                 "291",
                                 TEST_SEMESTER,
                                 defaults={"primary_listing": b})
     a_db = Course.objects.get(full_code="CIS-120")
     b_db = Course.objects.get(full_code="OIDD-291")
     c_db = Course.objects.get(full_code="LGST-291")
     t1 = Topic.objects.get(courses__full_code="CIS-120")
     t2 = Topic.objects.filter(courses__full_code="OIDD-291")[:1].get()
     self.assertEqual(a.topic, t1)
     self.assertEqual(b.topic, t2)
     self.assertEqual(c.topic, t2)
     self.assertEqual(a_db.topic, t1)
     self.assertEqual(b_db.topic, t2)
     self.assertEqual(c_db.topic, t2)
     self.assertEqual(t1.most_recent, a_db)
     self.assertEqual(t2.most_recent, b_db)
示例#16
0
 def test_new(self):
     a, _ = get_or_create_course("CIS", "120", TEST_SEMESTER)
     a_db = Course.objects.get(full_code="CIS-120")
     self.assertEqual(a.primary_listing, a)
     self.assertEqual(a_db.primary_listing, a_db)