* Added the ability to suspend/unsuspend cards.
* Added the ability to add/remove tags.
This commit is contained in:
parent
28ad457773
commit
e582d8284b
@ -412,6 +412,16 @@ class CollectionHandler(RestHandlerBase):
|
|||||||
|
|
||||||
col.sched.answerCard(card, ease)
|
col.sched.answerCard(card, ease)
|
||||||
|
|
||||||
|
@noReturnValue
|
||||||
|
def suspend_cards(self, col, req):
|
||||||
|
card_ids = req.data['ids']
|
||||||
|
col.sched.suspendCards(card_ids)
|
||||||
|
|
||||||
|
@noReturnValue
|
||||||
|
def unsuspend_cards(self, col, req):
|
||||||
|
card_ids = req.data['ids']
|
||||||
|
col.sched.unsuspendCards(card_ids)
|
||||||
|
|
||||||
#
|
#
|
||||||
# GLOBAL / MISC
|
# GLOBAL / MISC
|
||||||
#
|
#
|
||||||
@ -509,6 +519,20 @@ class NoteHandler(RestHandlerBase):
|
|||||||
note = col.getNote(req.ids[1])
|
note = col.getNote(req.ids[1])
|
||||||
return self._serialize(note)
|
return self._serialize(note)
|
||||||
|
|
||||||
|
@noReturnValue
|
||||||
|
def add_tags(self, col, req):
|
||||||
|
note = col.getNote(req.ids[1])
|
||||||
|
for tag in req.data['tags']:
|
||||||
|
note.addTag(tag)
|
||||||
|
note.flush()
|
||||||
|
|
||||||
|
@noReturnValue
|
||||||
|
def remove_tags(self, col, req):
|
||||||
|
note = col.getNote(req.ids[1])
|
||||||
|
for tag in req.data['tags']:
|
||||||
|
note.delTag(tag)
|
||||||
|
note.flush()
|
||||||
|
|
||||||
class DeckHandler(RestHandlerBase):
|
class DeckHandler(RestHandlerBase):
|
||||||
"""Default handler group for 'deck' type."""
|
"""Default handler group for 'deck' type."""
|
||||||
|
|
||||||
@ -573,6 +597,22 @@ class CardHandler(RestHandlerBase):
|
|||||||
card = col.getCard(req.ids[1])
|
card = col.getCard(req.ids[1])
|
||||||
return self._serialize(card, req.data)
|
return self._serialize(card, req.data)
|
||||||
|
|
||||||
|
def _forward_to_note(self, card_id, name):
|
||||||
|
card = col.getCard(card_id)
|
||||||
|
|
||||||
|
req_copy = req.copy()
|
||||||
|
req_copy.ids[1] = card.nid
|
||||||
|
|
||||||
|
return self.app.execute_handler('note', name, col, req)
|
||||||
|
|
||||||
|
@noReturnValue
|
||||||
|
def add_tags(self, col, req):
|
||||||
|
self._forward_to_note(req.ids[1], 'add_tags')
|
||||||
|
|
||||||
|
@noReturnValue
|
||||||
|
def remove_tags(self, col, req):
|
||||||
|
self._forward_to_note(req.ids[1], 'remove_tags')
|
||||||
|
|
||||||
# Our entry point
|
# Our entry point
|
||||||
def make_app(global_conf, **local_conf):
|
def make_app(global_conf, **local_conf):
|
||||||
# TODO: we should setup the default language from conf!
|
# TODO: we should setup the default language from conf!
|
||||||
|
|||||||
@ -349,6 +349,28 @@ class CollectionHandlerTest(CollectionTestBase):
|
|||||||
card = self.execute('next_card', {})
|
card = self.execute('next_card', {})
|
||||||
self.assertEqual(card['reps'], 1)
|
self.assertEqual(card['reps'], 1)
|
||||||
|
|
||||||
|
def test_suspend_cards(self):
|
||||||
|
# add a note programatically
|
||||||
|
self.add_default_note()
|
||||||
|
|
||||||
|
# get the id for the one card on this collection
|
||||||
|
card_id = self.collection.findCards('')[0]
|
||||||
|
|
||||||
|
# suspend it
|
||||||
|
self.execute('suspend_cards', {'ids': [card_id]})
|
||||||
|
|
||||||
|
# test that getting the next card will be None
|
||||||
|
card = self.collection.sched.getCard()
|
||||||
|
self.assertEqual(card, None)
|
||||||
|
|
||||||
|
# unsuspend it
|
||||||
|
self.execute('unsuspend_cards', {'ids': [card_id]})
|
||||||
|
|
||||||
|
# test that now we're getting the next card!
|
||||||
|
self.collection.sched.reset()
|
||||||
|
card = self.collection.sched.getCard()
|
||||||
|
self.assertEqual(card.id, card_id)
|
||||||
|
|
||||||
class ImportExportHandlerTest(CollectionTestBase):
|
class ImportExportHandlerTest(CollectionTestBase):
|
||||||
export_rows = [
|
export_rows = [
|
||||||
['Card front 1', 'Card back 1', 'Tag1 Tag2'],
|
['Card front 1', 'Card back 1', 'Tag1 Tag2'],
|
||||||
@ -431,6 +453,30 @@ class NoteHandlerTest(CollectionTestBase):
|
|||||||
self.assertEqual(ret['string_tags'], 'Tag1 Tag2')
|
self.assertEqual(ret['string_tags'], 'Tag1 Tag2')
|
||||||
self.assertEqual(ret['usn'], -1)
|
self.assertEqual(ret['usn'], -1)
|
||||||
|
|
||||||
|
def test_add_tags(self):
|
||||||
|
self.add_default_note()
|
||||||
|
note_id = self.collection.findNotes('')[0]
|
||||||
|
note = self.collection.getNote(note_id)
|
||||||
|
self.assertFalse('NT1' in note.tags)
|
||||||
|
self.assertFalse('NT2' in note.tags)
|
||||||
|
|
||||||
|
self.execute('add_tags', {'tags': ['NT1', 'NT2']}, note_id)
|
||||||
|
note = self.collection.getNote(note_id)
|
||||||
|
self.assertTrue('NT1' in note.tags)
|
||||||
|
self.assertTrue('NT2' in note.tags)
|
||||||
|
|
||||||
|
def test_remove_tags(self):
|
||||||
|
self.add_default_note()
|
||||||
|
note_id = self.collection.findNotes('')[0]
|
||||||
|
note = self.collection.getNote(note_id)
|
||||||
|
self.assertTrue('Tag1' in note.tags)
|
||||||
|
self.assertTrue('Tag2' in note.tags)
|
||||||
|
|
||||||
|
self.execute('remove_tags', {'tags': ['Tag1', 'Tag2']}, note_id)
|
||||||
|
note = self.collection.getNote(note_id)
|
||||||
|
self.assertFalse('Tag1' in note.tags)
|
||||||
|
self.assertFalse('Tag2' in note.tags)
|
||||||
|
|
||||||
class DeckHandlerTest(CollectionTestBase):
|
class DeckHandlerTest(CollectionTestBase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(DeckHandlerTest, self).setUp()
|
super(DeckHandlerTest, self).setUp()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user