Beispiel #1
0
    def ilias_5_4(driver, choices):
        for tr in driver.find_elements_by_css_selector(
                "#form_tst_question_correction table tbody tr"):
            answer_text_element, points_element = list(
                tr.find_elements_by_css_selector("td"))

            set_element_value(
                driver, points_element.find_element_by_css_selector("input"),
                str(choices[answer_text_element.text.strip()]))
Beispiel #2
0
 def _set_ui(driver, choices):
     i = 0
     while True:
         try:
             choice = driver.find_element_by_name("choice[answer][%d]" % i)
         except NoSuchElementException:
             break
         points = driver.find_element_by_name("choice[points][%d]" % i)
         set_element_value(driver, points,
                           str(choices[choice.get_attribute("value")]))
         i += 1
Beispiel #3
0
def update_gap_options(driver, gap_index, options):
    for option_index, (key, score) in enumerate(options.items()):
        answer = driver.find_element_by_id("gap_%d[answer][%d]" %
                                           (gap_index, option_index))
        answer_key = answer.get_attribute("value")
        if answer_key != key:
            raise InteractionException(
                "must not change title for gap %d, option %d from '%s' to '%s'"
                % (gap_index, option_index, answer_key, key))

        points = driver.find_element_by_id("gap_%d[points][%d]" %
                                           (gap_index, option_index))
        set_element_value(driver, points, str(score))
Beispiel #4
0
    def ilias_5_4(driver, choices):
        for tr in driver.find_elements_by_css_selector(
                "#form_tst_question_correction table tbody tr"):
            answer_text_element, *points_elements = list(
                tr.find_elements_by_css_selector("td"))
            assert (len(points_elements) == 2)

            item = choices[answer_text_element.text.strip()]

            for element, value in zip(
                    points_elements,
                (item.checked_score, item.unchecked_score)):
                set_element_value(
                    driver, element.find_element_by_css_selector("input"),
                    str(value))
Beispiel #5
0
    def _ui_update_scores(driver, scores):
        current_keys = set(MatchingQuestion._ui_get_pair_keys(driver))

        added = set(scores.keys()) - current_keys
        MatchingQuestion._ui_add_pairs(driver, added)

        removed = current_keys - set(scores.keys())
        MatchingQuestion._ui_remove_pairs(driver, removed)

        current_pairs = MatchingQuestion._ui_get_pair_indices(driver)
        assert set(current_pairs.keys()) == set(scores.keys())

        for key, score in scores.items():
            points_element = driver.find_element_by_css_selector(
                'input[name="pairs[points][%d]"]' % current_pairs[key])
            set_element_value(driver, points_element, str(score))
Beispiel #6
0
def _readjust_ui(context, driver, scoring):
    halfpoints_checkbox = driver.find_element_by_name("score_partsol_enabled")
    if halfpoints_checkbox.is_selected() != scoring.halfpoints:
        halfpoints_checkbox.click()

    set_element_value(driver, driver.find_element_by_name("points"),
                      str(scoring.score))

    def ilias_5_4(driver, scoring):
        choices = dict(
            (choice.name.strip(), choice) for choice in scoring.choices)

        for tr in driver.find_elements_by_css_selector(
                "#kprim_answers table tbody tr"):
            answer_text_element, *points_elements = list(
                tr.find_elements_by_css_selector("td"))
            answer_text = answer_text_element.text.strip()

            choice = choices[answer_text]
            del choices[answer_text]

            radio_value = 1 if choice.is_correct else 0

            for element in points_elements:
                radio = element.find_element_by_css_selector("input")
                if int(radio.get_attribute("value")) == radio_value:
                    radio.click()
                    break

        if choices:
            raise InteractionException(
                "some choices were not listed in readjustment ui")

    def ilias_5_3(driver, scoring):
        for i, choice in enumerate(scoring.choices):
            radio_value = 1 if choice.is_correct else 0

            for radio in driver.find_elements_by_name(
                    "kprim_answers[correctness][%d]" % i):
                if int(radio.get_attribute("value")) == radio_value:
                    radio.click()
                    break

    if context.ilias_version >= (5, 4):
        ilias_5_4(driver, scoring)
    else:
        ilias_5_3(driver, scoring)
Beispiel #7
0
    def ilias_5_3(driver, choices):
        i = 0
        while True:
            try:
                choice = driver.find_element_by_name("choice[answer][%d]" % i)
            except NoSuchElementException:
                break

            item = choices[choice.get_attribute("value")]

            for name, value in (('points', item.checked_score),
                                ('points_unchecked', item.unchecked_score)):
                points = driver.find_element_by_name("choice[%s][%d]" %
                                                     (name, i))
                set_element_value(driver, points, str(value))

            i += 1
Beispiel #8
0
    def _set_ui(driver, scoring):
        halfpoints_checkbox = driver.find_element_by_name(
            "score_partsol_enabled")
        if halfpoints_checkbox.is_selected() != scoring.halfpoints:
            halfpoints_checkbox.click()

        set_element_value(driver, driver.find_element_by_name("points"),
                          str(scoring.score))

        for i, choice in enumerate(scoring.choices):
            radio_value = 1 if choice.is_correct else 0

            for radio in driver.find_elements_by_name(
                    "kprim_answers[correctness][%d]" % i):
                if int(radio.get_attribute("value")) == radio_value:
                    radio.click()
                    break
Beispiel #9
0
	def _ui_update_scores(self, driver, scores, context):
		if context.ilias_version >= (5, 4):
			definition_ids = dict((label, i) for i, label in self.definitions.items())
			term_ids = dict((label, i) for i, label in self.terms.items())

			seen_keys = set()

			for tr in driver.find_elements_by_css_selector(".matchingpairwizard tbody tr"):
				tds = list(tr.find_elements_by_css_selector("td"))

				definition_id = definition_ids[tds[0].text.strip()]
				term_id = term_ids[tds[1].text.strip()]

				key = (definition_id, term_id)
				score = scores[key]
				set_element_value(driver, tds[2].find_element_by_css_selector("input"), str(score))

				seen_keys.add(key)

			assert seen_keys == set(scores.keys())

		else:
			current_keys = set(MatchingQuestion._ui_get_pair_keys(driver))

			added = set(scores.keys()) - current_keys
			MatchingQuestion._ui_add_pairs(driver, added)

			removed = current_keys - set(scores.keys())
			MatchingQuestion._ui_remove_pairs(driver, removed)

			current_pairs = MatchingQuestion._ui_get_pair_indices(driver)
			assert set(current_pairs.keys()) == set(scores.keys())

			for key, score in scores.items():
				points_element = driver.find_element_by_css_selector(
					'input[name="pairs[points][%d]"]' % current_pairs[key])
				set_element_value(driver, points_element, str(score))
Beispiel #10
0
 def _set_ui(self, value, context):
     selector = '.ilc_question_TextQuestion textarea.ilc_qlinput_LongTextInput'
     element = self.driver.find_element_by_css_selector(selector)
     set_element_value(self.driver, element, value)
Beispiel #11
0
 def update_scores(self):
     set_element_value(
         self.driver,
         self.driver.find_element_by_name("gap_%d_numeric_points" %
                                          self.gap_index),
         str(self.gap.score))
Beispiel #12
0
def update_numeric_gap_scoring(driver, gap_index, gap):
    set_element_value(
        driver,
        driver.find_element_by_name("gap_%d_numeric_points" % gap_index),
        str(gap.score))
Beispiel #13
0
	def _set_ui(driver, score):
		points = driver.find_element_by_id("non_keyword_points")
		set_element_value(driver, points, str(score))
Beispiel #14
0
	def value(self, new_value):
		match = self.driver.find_element_by_name(self.name)
		set_element_value(self.driver, match, new_value)
		self._value = new_value