Ejemplo n.º 1
0
    def test_preclude_CRD(self):
        '''
            Tests creating, reading and deleting of preclusions.
        '''
        if not self.preclude_CRD_tested:
            model.add_module(self.test_preclude_code, self.test_module_name,
                             self.test_module_desc, self.test_module_mc,
                             self.test_module_status)

            outcome = model.add_preclusion(self.test_module_code,
                                           self.test_preclude_code)
            assert_true(outcome)

            # Module should not preclude itself check
            outcome = model.add_preclusion(self.test_preclude_code,
                                           self.test_preclude_code)
            assert_false(outcome)

            # Modules should mutually preclude each other
            preclude_info = model.get_preclusion(self.test_module_code)
            assert_true(preclude_info is not None)
            assert_equal(self.test_preclude_code, preclude_info[0][0])

            preclude_info = model.get_preclusion(self.test_preclude_code)
            assert_true(preclude_info is not None)
            assert_equal(self.test_module_code, preclude_info[0][0])

            model.delete_preclusion(self.test_module_code,
                                    self.test_preclude_code)
            model.delete_module(self.test_preclude_code)

            # After deleting preclusion, it should not exist
            preclude_info = model.get_preclusion(self.test_module_code)
            assert_true(len(preclude_info) == 0)
            return
Ejemplo n.º 2
0
    def test_query_module_taken_together_specified_mod_specified_aysem(self):
        '''
            Tests querying the list of modules taken together
            with specified module in the specified semester
        '''

        # Add some dummy students and modules
        model.add_student('dummyYr1A', 1)
        model.add_module('AAA1111', 'Dummy 1', 'Description', 4, 'Active')
        model.add_module('AAA1112', 'Dummy 2', 'Description', 4, 'Active')
        model.add_student_plan('dummyYr1A', True, 'AAA1111', 'AY 17/18 Sem 2')
        model.add_student_plan('dummyYr1A', True, 'AAA1112', 'AY 17/18 Sem 2')

        list_of_mod_taken_together = \
            model.get_mod_taken_together_with_mod_and_aysem('AAA1111', 'AY 17/18 Sem 2')

        required_list = [('AAA1111', 'Dummy 1', 'AAA1112', 'Dummy 2', 1)]

        assert_equal(len(list_of_mod_taken_together), len(required_list))
        assert_equal(sorted(list_of_mod_taken_together), sorted(required_list))
        assert_true(
            self.is_count_in_non_ascending_order(list_of_mod_taken_together))

        # Clean up database
        model.delete_all_plans_of_student('dummyYr1A')
        model.delete_module('AAA1111')
        model.delete_module('AAA1112')
        model.delete_student('dummyYr1A')
Ejemplo n.º 3
0
    def test_preclude_delete_all(self):
        '''
            Tests deleting all preclusions of specific module.
        '''
        if not self.preclude_delete_all_tested:
            model.add_module(self.test_preclude_code, self.test_module_name,
                             self.test_module_desc, self.test_module_mc,
                             self.test_module_status)
            model.add_module(self.test_preclude_code2, self.test_module_name,
                             self.test_module_desc, self.test_module_mc,
                             self.test_module_status)

            model.add_preclusion(self.test_module_code,
                                 self.test_preclude_code)
            model.add_preclusion(self.test_module_code,
                                 self.test_preclude_code2)

            outcome = model.delete_all_preclusions(self.test_module_code)
            assert_true(outcome)

            preclude_info_1 = model.get_preclusion(self.test_preclude_code)
            preclude_info_2 = model.get_preclusion(self.test_preclude_code2)
            preclude_info_3 = model.get_preclusion(self.test_module_code)

            model.delete_module(self.test_preclude_code)
            model.delete_module(self.test_preclude_code2)

            assert_true(len(preclude_info_1) == 0)
            assert_true(len(preclude_info_2) == 0)
            assert_true(len(preclude_info_3) == 0)
            return
Ejemplo n.º 4
0
    def test_prereq_delete_all(self):
        '''
            Tests deleting all prerequisites of specific module.
        '''
        if not self.prereq_delete_all_tested:
            model.add_module(self.test_prereq_code, self.test_module_name,
                             self.test_module_desc, self.test_module_mc,
                             self.test_module_status)
            model.add_module(self.test_prereq2_code, self.test_module_name,
                             self.test_module_desc, self.test_module_mc,
                             self.test_module_status)

            model.add_prerequisite(self.test_module_code,
                                   self.test_prereq_code,
                                   self.test_prereq_index)
            model.add_prerequisite(self.test_module_code,
                                   self.test_prereq2_code,
                                   self.test_prereq2_index)

            outcome = model.delete_all_prerequisite(self.test_module_code)
            assert_true(outcome)

            model.delete_module(self.test_prereq_code)
            model.delete_module(self.test_prereq2_code)
            prereq_info = model.get_prerequisite(self.test_module_code)
            assert_true(len(prereq_info) == 0)
            return
Ejemplo n.º 5
0
    def tearDown(self):
        '''
            Tears down 'app.py' fixture and logs out
        '''
        session.tear_down(self.test_app)

        model.delete_module(self.DUMMY_MODULE_CODE)
Ejemplo n.º 6
0
    def test_query_module_before_internship(self):
        '''
            Tests querying the list of modules taken before internship,
            in AY/Sem with people doing internship in.
        '''
        # Add some modules and dummy students
        required_dummy = ('AAA1111', 'Dummy for Intern', 1)
        model.add_student('dummyYr1A', 1)
        model.add_module('AAA1111', 'Dummy for Intern', 'Description', 4,
                         'Active')
        model.add_student_plan('dummyYr1A', True, 'AAA1111', 'AY 16/17 Sem 2')
        model.add_student_plan('dummyYr1A', True, self.INTERN_MOD,
                               self.INTERN_SEM)

        # Get list of modules taken before internship
        list_of_modules_before_internship = model.get_mod_before_intern(
            self.INTERN_SEM)

        assert required_dummy in list_of_modules_before_internship

        # Clean up database
        model.delete_all_plans_of_student('dummyYr1A')
        model.delete_module('AAA1111')
        model.delete_student('dummyYr1A')

        # Test that required dummy no longer in list
        list_of_modules_before_internship = model.get_mod_before_intern(
            self.INTERN_SEM)

        assert required_dummy not in list_of_modules_before_internship
Ejemplo n.º 7
0
    def test_query_module_before_internship_with_mod_after_internship(self):
        '''
            Tests querying the list of modules taken before internship,
            in AY/Sem with people doing internship in, and
            with some modules taken after or during aysem of internship
        '''
        # Get list of modules before internship
        list_of_modules_before_internship = model.get_mod_before_intern(
            self.INTERN_SEM)

        # Add some dummy students and plans. They should not affect the list
        model.add_student('dummyYr1A', 1)
        model.add_module('AAA1111', 'Dummy with Intern', 'Description', 4,
                         'Active')
        model.add_module('AAA1112', 'Dummy after Intern', 'Description', 4,
                         'Active')
        model.add_student_plan('dummyYr1A', True, 'AAA1111', self.INTERN_SEM)
        model.add_student_plan('dummyYr1A', True, self.INTERN_MOD,
                               self.INTERN_SEM)
        model.add_student_plan('dummyYr1A', True, 'AAA1112', 'AY 17/18 Sem 2')

        # Get new list of modules before internship. It should remain unchanged.
        new_list_of_modules_before_internship = model.get_mod_before_intern(
            self.INTERN_SEM)

        assert_equal(len(list_of_modules_before_internship),
                     len(new_list_of_modules_before_internship))
        assert_equal(sorted(list_of_modules_before_internship),
                     sorted(new_list_of_modules_before_internship))

        # Clean up database
        model.delete_all_plans_of_student('dummyYr1A')
        model.delete_module('AAA1111')
        model.delete_module('AAA1112')
        model.delete_student('dummyYr1A')
Ejemplo n.º 8
0
 def tearDown(self):
     '''
         Clean up the database after all test cases are ran
     '''
     model.delete_prerequisite(self.test_module_code, self.test_prereq_code)
     model.delete_tenta_mounting(self.test_module_code,
                                 self.test_module_tenta_mounting_s1)
     model.delete_module(self.test_module_code)
Ejemplo n.º 9
0
    def test_is_existing_module(self):
        '''
            Tests if is_existing_module() function is working correctly.
        '''
        current_test_module_code = "ZZ7654"

        assert_false(model.is_existing_module(current_test_module_code))
        model.add_module(current_test_module_code, "Exist Module",
                         "I describe myself", 4, "New")
        assert_true(model.is_existing_module(current_test_module_code))
        model.delete_module(current_test_module_code)
 def tearDown(self):
     '''
         Clean up the database after all test cases are ran
     '''
     model.delete_module(self.test_module_code)
     model.delete_module(self.test_prereq_code)
     model.delete_module(self.test_prereq2_code)
     model.delete_module(self.test_prereq3_code)
Ejemplo n.º 11
0
    def POST(self):
        '''
            Handles the deletion of a module
        '''
        # Verify that module exists
        input_data = model.validate_input(web.input(), ["code"],
                                          show_404=False)
        try:
            module_code = input_data.code
        except AttributeError:
            return Outcome().POST("delete_module", False, None)

        # Verify that module's status is 'New'
        module_infos = model.get_new_modules()
        new_modules = [module_info[0] for module_info in module_infos]
        if module_code not in new_modules:
            return Outcome().POST("delete_module", False, None)

        else:
            outcome = model.delete_module(module_code)
            if outcome is False:
                tenta_mounted_modules = model.get_all_tenta_mounted_modules()
                tenta_mounted_module_codes = [
                    module[0] for module in tenta_mounted_modules
                ]
                if module_code in tenta_mounted_module_codes:
                    return Outcome().POST("delete_module", "has_mounting",
                                          module_code)
                else:
                    return Outcome().POST("delete_module", "is_starred",
                                          module_code)
            else:
                return Outcome().POST("delete_module", True, module_code)
Ejemplo n.º 12
0
    def test_add_mod_with_repeat_code(self):
        '''
            Tests that adding of module with duplicated code will fail.
        '''
        # Not duplicate code --> success
        outcome = model.add_module("AA2222", "Dummy Module",
                                   "Dummy Description", 1, "New")
        assert_true(outcome)

        # Duplicate code --> fail
        outcome = model.add_module(self.test_module_code,
                                   self.test_module_name,
                                   self.test_module_desc, self.test_module_mc,
                                   "New")
        assert_false(outcome)

        model.delete_module("AA2222")
Ejemplo n.º 13
0
 def test_delete_module_with_mounting(self):
     '''
         Tests deleting of modules with tentative mounting.
     '''
     outcome = model.delete_module(self.test_module_code)
     assert_false(outcome)
     module_info = model.get_module(self.test_module_code)
     assert_true(module_info is not None)
     return
    def test_list_students_take_module_empty(self):
        '''
            Tests querying the list of students who plan
            to take a certain mod in a specified semester,
            where these are no students planning to take the module.
        '''
        model.add_module('AAA1111', 'Dummy Module', 'Description', 4, 'Active')

        list_of_students_take_mod = \
            model.get_list_students_take_module('AAA1111', 'AY 17/18 Sem 1')

        required_list = []

        # Clean up database
        model.delete_module('AAA1111')

        assert_equal(len(list_of_students_take_mod), len(required_list))
        assert_equal(sorted(list_of_students_take_mod), sorted(required_list))
Ejemplo n.º 15
0
 def tearDown(self):
     '''
         Clean up the database after all test cases are ran
     '''
     model.delete_fixed_mounting('BB1001', self.current_ay+' Sem 1')
     model.delete_fixed_mounting('BB1001', self.current_ay+' Sem 2')
     model.delete_fixed_mounting('BB1002', self.current_ay+' Sem 1')
     model.delete_fixed_mounting('BB1003', self.current_ay+' Sem 2')
     model.delete_tenta_mounting('BB1001', self.next_ay+' Sem 1')
     model.delete_tenta_mounting('BB1001', self.next_ay+' Sem 2')
     model.delete_tenta_mounting('BB1002', self.next_ay+' Sem 1')
     model.delete_tenta_mounting('BB1003', self.next_ay+' Sem 2')
     model.delete_tenta_mounting('BB9999', 'AY 36/37 Sem 1')
     model.delete_module('BB1001')
     model.delete_module('BB1002')
     model.delete_module('BB1003')
     model.delete_module('BB1004')
     model.delete_module('BB9999')
    def test_query_oversubscribed_modules(self):
        '''
            Tests querying the list of oversubscribed modules.
        '''
        # To simulate an oversubscribed module, add a module with 0 quota,
        # then add a student who wants to take the module.
        model.add_student('dummyYr1A', 1)
        model.add_module('AAA1111', 'Test Module', 'Description', 4, 'Active')
        model.add_student_plan('dummyYr1A', False, 'AAA1111', 'AY 17/18 Sem 1')

        list_of_oversub_mod = model.get_oversub_mod()
        oversubscribed_module = ('AAA1111', 'Test Module', 'AY 17/18 Sem 1',
                                 '?', 1)

        # Clean up the database
        model.delete_all_plans_of_student('dummyYr1A')
        model.delete_module("AAA1111")
        model.delete_student('dummyYr1A')

        # Test for presence of oversubscribed module
        assert oversubscribed_module in list_of_oversub_mod
Ejemplo n.º 17
0
    def test_query_module_taken_together_entire_list(self):
        '''
            Tests querying the list of modules taken together
            in the same semester
        '''
        # Add some dummy students and modules
        model.add_student('dummyYr1A', 1)
        model.add_module('AAA1111', 'Dummy 1', 'Description', 4, 'Active')
        model.add_module('AAA1112', 'Dummy 2', 'Description', 4, 'Active')
        model.add_module('AAA1113', 'Dummy 3', 'Description', 4, 'Active')
        model.add_student_plan('dummyYr1A', True, 'AAA1111', 'AY 17/18 Sem 1')
        model.add_student_plan('dummyYr1A', True, 'AAA1112', 'AY 17/18 Sem 1')
        model.add_student_plan('dummyYr1A', True, 'AAA1112', 'AY 17/18 Sem 2')
        model.add_student_plan('dummyYr1A', True, 'AAA1113', 'AY 17/18 Sem 2')

        list_of_mod_taken_together = \
            model.get_all_mods_taken_together()

        assert_true(
            self.is_count_in_non_ascending_order(list_of_mod_taken_together))

        assert ('AAA1111', 'Dummy 1', 'AAA1112', 'Dummy 2', 'AY 17/18 Sem 1',
                1) in list_of_mod_taken_together
        assert ('AAA1112', 'Dummy 2', 'AAA1113', 'Dummy 3', 'AY 17/18 Sem 2',
                1) in list_of_mod_taken_together

        # Clean up database
        model.delete_all_plans_of_student('dummyYr1A')
        model.delete_module('AAA1111')
        model.delete_module('AAA1112')
        model.delete_module('AAA1113')
        model.delete_student('dummyYr1A')
Ejemplo n.º 18
0
    def test_add_module_with_valid_form_inputs(self):
        '''
            Tests that adding a module with all valid inputs should
            be successful.
        '''
        root = self.test_app.get(self.URL_NORMAL)

        addModuleForm = root.forms__get()['addModForm']
        addModuleForm.__setitem__('code', self.TEST_ADD_MODULE_CODE)
        addModuleForm.__setitem__('name', self.TEST_ADD_MODULE_NAME)
        addModuleForm.__setitem__('description',
                                  self.TEST_ADD_MODULE_DESCRIPTION)
        addModuleForm.__setitem__('mc', self.TEST_ADD_MODULE_MC)

        response = addModuleForm.submit()
        response.mustcontain(
            (self.OUTCOME_SUCCESS_MESSAGE % self.TEST_ADD_MODULE_CODE))
        response.mustcontain(self.OUTCOME_SUCCESS_REDIRECT %
                             self.TEST_ADD_MODULE_CODE)

        # For reusing data, delete it after it is successfully added.
        model.delete_module(self.TEST_ADD_MODULE_CODE)
Ejemplo n.º 19
0
    def test_module_CRD(self):
        '''
            Tests creating, reading and deleting of modules.
        '''
        if not self.module_CRD_tested:
            model.add_module(self.test_module_code, self.test_module_name,
                             self.test_module_desc, self.test_module_mc,
                             self.test_module_status)

            module_info = model.get_module(self.test_module_code)
            assert_true(module_info is not None)

            assert_equal(self.test_module_code, module_info[0])
            assert_equal(self.test_module_name, module_info[1])
            assert_equal(self.test_module_desc, module_info[2])
            assert_equal(self.test_module_mc, module_info[3])
            assert_equal(self.test_module_status, module_info[4].rstrip())

            model.delete_module(self.test_module_code)
            module_info = model.get_module(self.test_module_code)
            assert_true(module_info is None)
            return
Ejemplo n.º 20
0
    def test_query_module_taken_together_specified_mod(self):
        '''
            Tests querying the list of modules taken together
            with specified module in the same semester
        '''
        # Add some dummy students and modules
        model.add_student('dummyYr1A', 1)
        model.add_module('AAA1111', 'Dummy 1', 'Description', 4, 'Active')
        model.add_module('AAA1112', 'Dummy 2', 'Description', 4, 'Active')
        model.add_student_plan('dummyYr1A', True, 'AAA1111', 'AY 17/18 Sem 2')
        model.add_student_plan('dummyYr1A', True, 'AAA1112', 'AY 17/18 Sem 2')

        list_of_mod_taken_together = \
            model.get_mod_taken_together_with('AAA1111')

        # Clean up database
        model.delete_all_plans_of_student('dummyYr1A')
        model.delete_module('AAA1111')
        model.delete_module('AAA1112')
        model.delete_student('dummyYr1A')

        assert ('AAA1111', 'Dummy 1', 'AAA1112', 'Dummy 2', 'AY 17/18 Sem 2',
                1) in list_of_mod_taken_together
Ejemplo n.º 21
0
    def test_prereq_CRD(self):
        '''
            Tests creating, reading and deleting of prerequisites.
        '''
        if not self.prereq_CRD_tested:
            model.add_module(self.test_prereq_code, self.test_module_name,
                             self.test_module_desc, self.test_module_mc,
                             self.test_module_status)

            model.add_prerequisite(self.test_module_code,
                                   self.test_prereq_code,
                                   self.test_prereq_index)

            prereq_info = model.get_prerequisite(self.test_module_code)
            assert_true(prereq_info is not None)
            assert_equal(self.test_prereq_index, prereq_info[0][0])
            assert_equal(self.test_prereq_code, prereq_info[0][1])

            model.delete_prerequisite(self.test_module_code,
                                      self.test_prereq_code)
            model.delete_module(self.test_prereq_code)
            prereq_info = model.get_prerequisite(self.test_module_code)
            assert_true(len(prereq_info) == 0)
            return
    def test_query_oversubscribed_modules_reworked(self):
        '''
            Tests querying the list of oversubscribed modules.
            (This test uses the reworked function)
        '''
        # To simulate an oversubscribed module, add a module with 0 quota,
        # then add a student who wants to take the module.
        oversub_handler = OversubModule()

        model.add_student('dummyYr1A', 1)
        model.add_module('AAA1111', 'Test Module', 'Description', 4, 'Active')
        model.add_student_plan('dummyYr1A', False, 'AAA1111', 'AY 17/18 Sem 1')

        list_of_oversub_mod = oversub_handler.GET("AY 17/18 Sem 1")
        oversubscribed_module = ('AAA1111', 'Test Module', 'AY 17/18 Sem 1',
                                 '-', 1, 1)

        # Clean up the database
        model.delete_all_plans_of_student('dummyYr1A')
        model.delete_module("AAA1111")
        model.delete_student('dummyYr1A')

        # Test for presence of oversubscribed module
        assert oversubscribed_module in list_of_oversub_mod
Ejemplo n.º 23
0
    def tearDown(self):
        '''
            Clean up the database after all test cases are ran
        '''
        model.delete_student_plan('D1000000A', 'PT1001', self.current_ay+' Sem 1')
        model.delete_student_plan('D1000000A', 'PT1002', self.current_ay+' Sem 2')
        model.delete_student_plan('D2000000A', 'PT1001', self.current_ay+' Sem 1')
        model.delete_student_plan('D2000000A', 'PT1002', self.current_ay+' Sem 2')
        model.delete_student_plan('D1000000A', 'PT1003', self.next_ay+' Sem 1')
        model.delete_student_plan('D3000000A', 'PT1001', self.current_ay+' Sem 1')
        model.delete_student_plan('D3000000A', 'PT1004', self.next_ay+' Sem 2')
        model.delete_student_plan('D5000000A', 'PT1001', self.current_ay+' Sem 1')
        model.delete_student_plan('D5000001A', 'PT1001', self.current_ay+' Sem 1')
        model.delete_student_plan('D5000002A', 'PT1001', self.current_ay+' Sem 2')
        model.delete_student_plan('D5000000A', 'PT1005', self.next_ay+' Sem 1')
        model.delete_student_plan('D5000001A', 'PT1005', self.next_ay+' Sem 1')
        model.delete_student_plan('D5000002A', 'PT1005', self.next_ay+' Sem 1')
        model.delete_student_plan('D5000003A', 'PT1005', self.next_ay+' Sem 1')
        model.delete_student_plan('D5000004A', 'PT1005', self.next_ay+' Sem 1')

        model.delete_tenta_mounting('PT1001', self.next_ay+' Sem 1')
        model.delete_tenta_mounting('PT1002', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('PT1003', self.next_ay+' Sem 1')
        model.delete_tenta_mounting('PT1003', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('PT1004', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('PT1005', self.next_ay+' Sem 1')

        model.delete_fixed_mounting('PT1001', self.current_ay+' Sem 1')
        model.delete_fixed_mounting('PT1001', self.current_ay+' Sem 2')
        model.delete_fixed_mounting('PT1002', self.current_ay+' Sem 2')

        model.delete_module('PT1001')
        model.delete_module('PT1002')
        model.delete_module('PT1003')
        model.delete_module('PT1004')
        model.delete_module('PT1005')
Ejemplo n.º 24
0
    def tearDown(self):
        '''
            Tears down 'app.py' fixture and logs out
        '''
        # These 3 lines delete any remaining traces of the modules
        model.delete_module(self.TEST_ADD_MODULE_CODE)
        model.delete_module(self.TEST_ADD_MODULE_CODE_RELAXED.upper())
        model.delete_module(self.TEST_ADD_INVALID_MODULE_CODE)

        session.tear_down(self.test_app)
Ejemplo n.º 25
0
    def setUp(self):
        '''
            Sets up the 'app.py' fixture
        '''
        self.middleware = []
        self.test_app = TestApp(APP.wsgifunc(*self.middleware))
        session.set_up(self.test_app)

        # These 3 lines delete any traces of other dummy module
        # data conflicting with the ones used in this test.
        model.delete_module(self.TEST_ADD_MODULE_CODE)
        model.delete_module(self.TEST_ADD_MODULE_CODE_RELAXED.upper())
        model.delete_module(self.TEST_ADD_INVALID_MODULE_CODE)
    def tearDown(self):
        '''
            Clean up the database after all test cases are ran
        '''
        model.delete_all_fixed_mountings(self.DUMMY_MODULE_CODE_1)
        model.delete_all_tenta_mountings(self.DUMMY_MODULE_CODE_1)
        model.delete_all_fixed_mountings(self.DUMMY_MODULE_CODE_2)
        model.delete_all_tenta_mountings(self.DUMMY_MODULE_CODE_2)
        model.delete_all_fixed_mountings(self.DUMMY_MODULE_CODE_3)
        model.delete_all_tenta_mountings(self.DUMMY_MODULE_CODE_3)

        model.delete_module(self.DUMMY_MODULE_CODE_1)
        model.delete_module(self.DUMMY_MODULE_CODE_2)
        model.delete_module(self.DUMMY_MODULE_CODE_3)
    def tearDown(self):
        '''
            Clean up the database after all test cases are ran
        '''
        model.NUMBER_OF_AY_SEMS_IN_SYSTEM = 2
        model.delete_fixed_mounting('BB1001', self.current_ay+' Sem 1')
        model.delete_fixed_mounting('BB1001', self.current_ay+' Sem 2')
        model.delete_fixed_mounting('BB1002', self.current_ay+' Sem 1')
        model.delete_fixed_mounting('BB1002', self.current_ay+' Sem 2')
        model.delete_fixed_mounting('BB1003', self.current_ay+' Sem 1')
        model.delete_fixed_mounting('BB1003', self.current_ay+' Sem 2')
        model.delete_fixed_mounting('BB1004', self.current_ay+' Sem 1')
        model.delete_fixed_mounting('BB1004', self.current_ay+' Sem 2')
        model.delete_fixed_mounting('BB1005', self.current_ay+' Sem 1')
        model.delete_fixed_mounting('BB1005', self.current_ay+' Sem 2')
        model.delete_fixed_mounting('BB1006', self.current_ay+' Sem 1')
        model.delete_fixed_mounting('BB1006', self.current_ay+' Sem 2')
        model.delete_fixed_mounting('BB2001', self.current_ay+' Sem 1')
        model.delete_fixed_mounting('BB2001', self.current_ay+' Sem 2')
        model.delete_fixed_mounting('BB2002', self.current_ay+' Sem 1')
        model.delete_fixed_mounting('BB2003', self.current_ay+' Sem 1')
        model.delete_fixed_mounting('BB2004', self.current_ay+' Sem 1')
        model.delete_fixed_mounting('BB3001', self.current_ay+' Sem 1')
        model.delete_fixed_mounting('BB3002', self.current_ay+' Sem 1')
        model.delete_fixed_mounting('BB3004', self.current_ay+' Sem 2')

        model.delete_tenta_mounting('BB1001', self.next_ay+' Sem 1')
        model.delete_tenta_mounting('BB1001', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('BB1002', self.next_ay+' Sem 1')
        model.delete_tenta_mounting('BB1002', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('BB1003', self.next_ay+' Sem 1')
        model.delete_tenta_mounting('BB1003', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('BB1004', self.next_ay+' Sem 1')
        model.delete_tenta_mounting('BB1004', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('BB1005', self.next_ay+' Sem 1')
        model.delete_tenta_mounting('BB1005', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('BB1006', self.next_ay+' Sem 1')
        model.delete_tenta_mounting('BB1006', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('BB2001', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('BB2002', self.next_ay+' Sem 1')
        model.delete_tenta_mounting('BB2002', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('BB2003', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('BB2004', self.next_ay+' Sem 1')
        model.delete_tenta_mounting('BB2004', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('BB3001', self.next_ay+' Sem 1')
        model.delete_tenta_mounting('BB3002', self.next_ay+' Sem 1')
        model.delete_tenta_mounting('BB3003', self.next_ay+' Sem 2')
        model.delete_tenta_mounting('BB3004', self.next_ay+' Sem 2')

        model.delete_module('BB1001')
        model.delete_module('BB1002')
        model.delete_module('BB1003')
        model.delete_module('BB1004')
        model.delete_module('BB1005')
        model.delete_module('BB1006')
        model.delete_module('BB2001')
        model.delete_module('BB2002')
        model.delete_module('BB2003')
        model.delete_module('BB2004')
        model.delete_module('BB3001')
        model.delete_module('BB3002')
        model.delete_module('BB3003')
        model.delete_module('BB3004')
        model.delete_module('BB3005')
        model.delete_module('BB3006')