Attempt to allow the user to configure the scheduler.

This commit is contained in:
David Snopek 2013-07-24 17:06:08 +01:00
parent e582d8284b
commit 1348950875
2 changed files with 57 additions and 1 deletions

View File

@ -353,9 +353,23 @@ class CollectionHandler(RestHandlerBase):
# SCHEDULER - Controls card review, ie. intervals, what cards are due, answering a card, etc.
#
@noReturnValue
def reset_scheduler(self, col, req):
if req.data.has_key('deck'):
deck = DeckHandler._get_deck(col, req.data['deck'])
col.decks.select(deck['id'])
col.sched.reset()
counts = col.sched.counts()
return {
'new_cards': counts[0],
'learning_cards': counts[1],
'review_cards': counts[1],
}
def extend_scheduler_limits(self, col, req):
new_cards = int(req.data.get('new_cards', 0))
review_cards = int(req.data.get('review_cards', 0))
col.sched.extendLimits(new_cards, review_cards)
button_labels = ['Easy', 'Good', 'Hard']
@ -548,6 +562,9 @@ class DeckHandler(RestHandlerBase):
raise HTTPNotFound('No deck with id or name: ' + str(val))
return deck
def index(self, col, req):
return self._get_deck(col, req.ids[1])
def next_card(self, col, req):
req_copy = req.copy()
@ -557,6 +574,21 @@ class DeckHandler(RestHandlerBase):
# forward this to the CollectionHandler
return req.app.execute_handler('collection', 'next_card', col, req_copy)
def get_conf(self, col, req):
# TODO: should probably live in a ConfHandler
return col.decks.confForDid(req.ids[1])
@noReturnValue
def set_update_conf(self, col, req):
data = req.data.copy()
del data['id']
conf = col.decks.confForDid(req.ids[1])
conf = conf.copy()
conf.update(data)
col.decks.updateConf(conf)
class CardHandler(RestHandlerBase):
"""Default handler group for 'card' type."""

View File

@ -265,6 +265,16 @@ class CollectionHandlerTest(CollectionTestBase):
# return everything to normal!
anki.lang.setLang('en')
def test_reset_scheduler(self):
self.add_default_note(3)
ret = self.execute('reset_scheduler', {'deck': 'Default'})
self.assertEqual(ret, {
'new_cards': 3,
'learning_cards': 0,
'review_cards': 0,
})
def test_next_card(self):
ret = self.execute('next_card', {})
self.assertEqual(ret, None)
@ -488,6 +498,13 @@ class DeckHandlerTest(CollectionTestBase):
req = RestHandlerRequest(self.mock_app, data, ids, {})
return func(self.collection, req)
def test_index(self):
ret = self.execute('index', {})
#pprint(ret)
self.assertEqual(ret['name'], 'Default')
self.assertEqual(ret['id'], 1)
self.assertEqual(ret['dyn'], False)
def test_next_card(self):
self.mock_app.execute_handler.return_value = None
@ -495,6 +512,13 @@ class DeckHandlerTest(CollectionTestBase):
self.assertEqual(ret, None)
self.mock_app.execute_handler.assert_called_with('collection', 'next_card', self.collection, RestHandlerRequest(self.mock_app, {'deck': '1'}, ['collection_name'], {}))
def test_get_conf(self):
ret = self.execute('get_conf', {})
#pprint(ret)
self.assertEqual(ret['name'], 'Default')
self.assertEqual(ret['id'], 1)
self.assertEqual(ret['dyn'], False)
class CardHandlerTest(CollectionTestBase):
def setUp(self):
super(CardHandlerTest, self).setUp()