def test__reorder(self): links = CustomLinks(db.creator, self._creator['id']) original = self._ordered_ids() links.reorder() got = self._ordered_ids() self.assertEqual(got, original) self.assertEqual(self._order_nos(), [1, 2, 3]) link_ids = [original[2], original[1], original[0]] links.reorder(link_ids=link_ids) got = self._ordered_ids() self.assertEqual(got, link_ids) self.assertEqual(self._order_nos(), [1, 2, 3]) # Test that holes are closed. link_ids = [original[0], original[1], original[2]] links.reorder(link_ids=link_ids) for x in self._ordered_records(): x.update_record(order_no=db.creator_to_link.order_no * 2) db.commit() self.assertEqual(self._order_nos(), [2, 4, 6]) links.reorder(link_ids=link_ids) self.assertEqual(self._order_nos(), [1, 2, 3])
def ondelete(table, record_id): """Callback for ondelete.""" db(table.id == record_id).delete() db.commit() if book_record: to_link_table = db.book_to_link filter_field = 'book_id' record = book_record links = CustomLinks(db.book, book_record.id) else: filter_field = 'creator_id' to_link_table = db.creator_to_link record = creator_record links = CustomLinks(db.creator, creator_record.id) # Delete any _to_links associated with the record. db(to_link_table.link_id == record_id).delete() db.commit() links.reorder()
def test__move_link(self): links = CustomLinks(db.creator, self._creator['id']) # Set up data original = self._ordered_ids() link_ids = [original[0], original[1], original[2]] links.reorder(link_ids=link_ids) got = self._ordered_ids() self.assertEqual(got, original) # Move top link up, should not change links.move_link(original[0], direction='up') got = self._ordered_ids() self.assertEqual(got, original) # Move bottom link down, should not change links.move_link(original[2], direction='down') got = self._ordered_ids() self.assertEqual(got, original) # Move top link down links.move_link(original[0], direction='down') got = self._ordered_ids() self.assertEqual(got, [original[1], original[0], original[2]]) # Move top link down again links.move_link(original[0], direction='down') got = self._ordered_ids() self.assertEqual(got, [original[1], original[2], original[0]]) # Move top link up links.move_link(original[0], direction='up') got = self._ordered_ids() self.assertEqual(got, [original[1], original[0], original[2]]) # Move top link up again, back to start links.move_link(original[0], direction='up') got = self._ordered_ids() self.assertEqual(got, original)