From b7be040222a115137717cdf452dbb376f456f8a9 Mon Sep 17 00:00:00 2001 From: Alexander Kryklia Date: Thu, 3 Jan 2013 17:38:06 +0200 Subject: [PATCH] updated case when no rule is processed --- common/lib/capa/capa/graders/draganddrop.py | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/common/lib/capa/capa/graders/draganddrop.py b/common/lib/capa/capa/graders/draganddrop.py index 980977d949..0b02181982 100644 --- a/common/lib/capa/capa/graders/draganddrop.py +++ b/common/lib/capa/capa/graders/draganddrop.py @@ -142,28 +142,22 @@ class DragAndDrop(object): # from now self.correct_groups and self.user_groups are equal if # order is ignored - # Checks in every group that user positions of every element are equal + # Next check in every group that user positions of every element are equal # with correct positions for every rule - # for group in self.correct_groups: # 'denied' rule - # if not self.compare_positions(self.correct_positions[group].get( - # 'denied', []), self.user_positions[group]['user'], flag='denied'): - # return False - passed_rules = dict() for rule in ('exact', 'anyof'): - passed_rules[rule] = True + passed_rules[rule] = 0 for groupname in self.correct_groups: if self.correct_positions[groupname].get(rule, []): if not self.compare_positions( self.correct_positions[groupname][rule], self.user_positions[groupname]['user'], flag=rule): return False - else: - passed_rules[rule] = False + passed_rules[rule] += 1 - # if all passed rules are false - if not reduce(lambda x, y: x or y, passed_rules): + # if no rule was executed for all groups + if sum(passed_rules.values()) == 0: return False return True @@ -201,7 +195,7 @@ class DragAndDrop(object): def populate(self, correct_answer, user_answer): """ """ - # convert from dict format to list format + # convert from dict answer format to list format if isinstance(correct_answer, dict): tmp = [] for key, value in correct_answer.items():