def test_query_module_association_many_preclusions(self):
        '''
            Tests querying the modules preclusions as a string, where there are
            more than one preclusions.
        '''
        preclude_string = model.get_preclusion_as_string('CS4350')
        required_preclude_string = "CS4204, CS4203"

        assert_true(
            is_preclude_equal(preclude_string, required_preclude_string))

        preclude_string = model.get_preclusion_as_string('CS4203')
        required_preclude_string = "CS4350, CS3283, CS3284"

        assert_true(
            is_preclude_equal(preclude_string, required_preclude_string))
    def test_query_module_association_one_preclusion(self):
        '''
            Tests querying the modules preclusions as a string, where there is
            only one preclusion.
        '''
        preclude_string = model.get_preclusion_as_string('CS4213')
        required_preclude_string = "CS3247"

        assert_true(
            is_preclude_equal(preclude_string, required_preclude_string))
    def test_query_module_association_no_preclusion(self):
        '''
            Tests querying the modules preclusions as a string, where there is
            no preclusions.
        '''
        preclude_string = model.get_preclusion_as_string('CS2104')
        required_preclude_string = ""

        assert_true(
            is_preclude_equal(preclude_string, required_preclude_string))
Esempio n. 4
0
    def GET(self):
        '''
            Handles the loading of the 'Edit General Module Info' page
        '''
        input_data = model.validate_input(web.input(), ["code"])
        module_code = input_data.code

        module_info = model.get_module(module_code)
        if module_info is None:
            return RENDER.notfound("Module " + module_code + " does not exist in the system.")

        preclusions = model.get_preclusion_as_string(module_code)
        prerequisites = model.get_prerequisite_as_string(module_code)

        return RENDER.moduleEdit(module_info, preclusions, prerequisites)
    def POST(self):
        '''
            Handles the submission of updated module preclusions
            for a target module.
        '''
        isSucessfullyUpdated = False

        input_data = model.validate_input(web.input(), ["code"], show_404=False)

        if input_data:
            module_code = input_data.code.upper()
            preclusions = json.loads(input_data.preclusions)
            isSucessfullyUpdated = model.edit_preclusion(module_code, preclusions)

        new_preclusions = model.get_preclusion_as_string(module_code)
        response = [isSucessfullyUpdated, new_preclusions]

        return json.dumps(response)
Esempio n. 6
0
    def GET(self):
        '''
            Retrieve and render all the info of a module
        '''
        if not session.validate_session():
            raise web.seeother('/login')

        input_data = model.validate_input(web.input(), ["code"])
        module_code = input_data.code

        # Get module's name, description, MC and status
        module_info = model.get_module(module_code)

        # Get mounting status, quota and number of students taking
        self.load_fixed_mounting_plan(module_code)
        self.load_tenta_mounting_plan(module_code)
        number_of_student_planning = model.get_number_students_planning(
            module_code)

        # Get module's prereqs and preclusions
        prereq_string = model.get_prerequisite_as_string(module_code)
        preclude_string = model.get_preclusion_as_string(module_code)

        # Check if module is starred
        is_starred = model.is_module_starred(module_code,
                                             web.cookies().get('user'))

        all_ay_sems = model.get_all_ay_sems()
        all_future_ay_sems = model.get_all_future_ay_sems()
        target_ay_sem = None

        #get html of overlapping modules template
        return RENDER.viewModule(module_info, all_ay_sems, all_future_ay_sems,
                                 target_ay_sem, self.fixed_mounting_plan,
                                 self.tenta_mounting_plan,
                                 number_of_student_planning, is_starred,
                                 prereq_string, preclude_string)