Commit 4d4e3931 by dragonfi

Add server side reset handler

parent 27dcf96e
...@@ -205,6 +205,10 @@ class DragAndDropBlock(XBlock): ...@@ -205,6 +205,10 @@ class DragAndDropBlock(XBlock):
'feedback': item['feedback']['correct'] if is_correct else item['feedback']['incorrect'] 'feedback': item['feedback']['correct'] if is_correct else item['feedback']['incorrect']
} }
@XBlock.handler
def reset(self, request, suffix=''):
self.item_state = {}
def _is_finished(self): def _is_finished(self):
"""All items are at their correct place""" """All items are at their correct place"""
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')
......
...@@ -11,8 +11,8 @@ from workbench.runtime import WorkbenchRuntime ...@@ -11,8 +11,8 @@ from workbench.runtime import WorkbenchRuntime
from xblock.runtime import KvsFieldData, DictKeyValueStore from xblock.runtime import KvsFieldData, DictKeyValueStore
from nose.tools import ( from nose.tools import (
assert_equals, assert_true, assert_in, assert_equals, assert_true, assert_false,
assert_regexp_matches assert_in, assert_regexp_matches
) )
import drag_and_drop_v2 import drag_and_drop_v2
...@@ -155,3 +155,21 @@ def test_ajax(): ...@@ -155,3 +155,21 @@ def test_ajax():
get_data = json.loads(block.handle('get_data', Mock()).body) get_data = json.loads(block.handle('get_data', Mock()).body)
assert_equals(expected, get_data) assert_equals(expected, get_data)
def test_ajax_solve_and_reset():
block = make_block()
assert_false(block.completed)
assert_equals(block.item_state, {})
data = json.dumps({"val":0,"zone":"Zone A","top":"11px","left":"111px"})
block.handle('do_attempt', make_request(data))
data = json.dumps({"val":1,"zone":"Zone B","top":"22px","left":"222px"})
block.handle('do_attempt', make_request(data))
assert_true(block.completed)
assert_equals(block.item_state, {0:("11px", "111px"), 1:("22px", "222px")})
block.handle('reset', make_request(""))
assert_true(block.completed)
assert_equals(block.item_state, {})
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