Commit 16ecdadf by Alexander Kryklia

changed interface

parent 31513787
...@@ -201,11 +201,15 @@ class DragAndDrop(object): ...@@ -201,11 +201,15 @@ class DragAndDrop(object):
def populate(self, correct_answer, user_answer): def populate(self, correct_answer, user_answer):
""" """ """ """
# convert from dict format to list format
tmp = []
if isinstance(correct_answer, dict): if isinstance(correct_answer, dict):
for key, value in correct_answer.items(): for key, value in correct_answer.items():
self.correct_groups[key] = [key] tmp_dict = {'draggables': [], 'targets': [], 'rule': 'exact'}
self.correct_positions[key] = {'exact': [value]} tmp_dict['draggables'].append(key)
tmp_dict['targets'].append(value)
tmp.append(tmp_dict)
correct_answer = tmp
user_answer = json.loads(user_answer) user_answer = json.loads(user_answer)
self.use_targets = user_answer.get('use_targets') self.use_targets = user_answer.get('use_targets')
...@@ -216,7 +220,12 @@ class DragAndDrop(object): ...@@ -216,7 +220,12 @@ class DragAndDrop(object):
# create identical data structures # create identical data structures
# user groups must mirror correct_groups # user groups must mirror correct_groups
# and positions must reflect order in group # and positions must reflect order in group
for groupname in self.correct_groups: for i in xrange(0, len(correct_answer)):
groupname = str(i)
self.correct_groups = OrderedDict()
self.correct_groups[groupname] = correct_answer[i]['draggables']
self.correct_positions = OrderedDict()
self.correct_positions[groupname] = {correct_answer[i]['rule']: correct_answer[i]['targets']}
self.user_groups[groupname] = [] self.user_groups[groupname] = []
self.user_positions[groupname] = {'user': []} self.user_positions[groupname] = {'user': []}
for draggable_dict in user_answer['draggables']: for draggable_dict in user_answer['draggables']:
...@@ -249,10 +258,6 @@ def grade(user_input, correct_answer): ...@@ -249,10 +258,6 @@ def grade(user_input, correct_answer):
else: else:
{'1': '[10, 10]', 'name_with_icon': '[[10, 10], 20]'} {'1': '[10, 10]', 'name_with_icon': '[[10, 10], 20]'}
Support 2 interfaces""" Support 2 interfaces"""
if isinstance(correct_answer, dict): dnd = DragAndDrop()
dnd = DragAndDrop()
else:
dnd = correct_answer
dnd.populate(correct_answer=correct_answer, user_answer=user_input) dnd.populate(correct_answer=correct_answer, user_answer=user_input)
return dnd.grade() return dnd.grade()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment