Commit 21e0ed0c by dragonfi

Publish item dropped event

parent 7d62a551
...@@ -170,13 +170,16 @@ class DragAndDropBlock(XBlock): ...@@ -170,13 +170,16 @@ class DragAndDropBlock(XBlock):
item = next(i for i in self.data['items'] if i['id'] == attempt['val']) item = next(i for i in self.data['items'] if i['id'] == attempt['val'])
tot_items = sum(1 for i in self.data['items'] if i['zone'] != 'none') tot_items = sum(1 for i in self.data['items'] if i['zone'] != 'none')
final_feedback = None
is_correct = False
if item['zone'] == attempt['zone']: if item['zone'] == attempt['zone']:
self.item_state[item['id']] = (attempt['top'], attempt['left']) self.item_state[item['id']] = (attempt['top'], attempt['left'])
is_correct = True
if len(self.item_state) == tot_items: if len(self.item_state) == tot_items:
final_feedback = self.data['feedback']['finish'] final_feedback = self.data['feedback']['finish']
else:
final_feedback = None
try: try:
self.runtime.publish(self, 'grade', { self.runtime.publish(self, 'grade', {
...@@ -188,19 +191,21 @@ class DragAndDropBlock(XBlock): ...@@ -188,19 +191,21 @@ class DragAndDropBlock(XBlock):
# so we have to figure that we're running in Studio for now # so we have to figure that we're running in Studio for now
pass pass
return { self.runtime.publish(self, 'drag-and-drop-v2.item.dropped', {
'correct': True, 'component_id': self.scope_ids.usage_id,
'finished': len(self.item_state) == tot_items, 'user_id': self.runtime.user_id,
'final_feedback': final_feedback, 'item_id': item['id'],
'feedback': item['feedback']['correct'] 'location': attempt['zone'],
} 'is_correct': is_correct
else: })
return {
'correct': False, return {
'finished': len(self.item_state) == tot_items, 'correct': is_correct,
'final_feedback': None, 'finished': len(self.item_state) == tot_items,
'feedback': item['feedback']['incorrect'] 'final_feedback': final_feedback,
} 'feedback': item['feedback']['correct'] if is_correct else item['feedback']['incorrect']
}
@staticmethod @staticmethod
def workbench_scenarios(): def workbench_scenarios():
......
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