Anki/anki
Damien Elmes ad743d850d start work on scheduling refactor
Previously we used getCard() to fetch a card at the time. This required a
number of indices to perform efficiently, and the indices were expensive in
terms of disk space and time required to keep them up to date. Instead we now
gather a bunch of cards at once.

- Drop checkDue()/isDue so writes are not necessary to the DB when checking
for due cards
- Due counts checked on deck load, and only updated once a day or at the end
of a session. This prevents cards from expiring during reviews, leading to
confusing undo behaviour and due counts that go up instead of down as you
review. The default will be to only expire cards once a day, which represents
a change from the way things were done previously.
- Set deck var defaults on deck load/create instead of upgrade, which should
fix upgrade issues
- The scheduling code can now have bits and pieces switched out, which should
make review early / cram etc easier to integrate
- Cards with priority <= 0 now have their type incremented by three, so we can
get access to schedulable cards with a single column.
- rebuildQueue() -> reset()
- refresh() -> refreshSession()
- Views and many of the indices on the cards table are now obsolete and will
  be removed in the future. I won't remove them straight away, so as to not
  break backward compatibility.
- Use bigger intervals between successive card templates, as the previous
intervals were too small to represent in doubles in some circumstances

Still to do:

- review early
- learn more
- failing mature cards where delay1 > delay0
2010-10-18 14:35:11 +09:00
..
importing start work on scheduling refactor 2010-10-18 14:35:11 +09:00
__init__.py bump version number 2010-08-19 13:42:19 +09:00
cards.py start work on scheduling refactor 2010-10-18 14:35:11 +09:00
db.py remove string exceptions for python2.6 2010-06-10 13:24:46 +09:00
deck.py start work on scheduling refactor 2010-10-18 14:35:11 +09:00
errors.py rename instance var to avoid deprecation warning 2009-04-29 15:28:13 +09:00
exporting.py ignore parse errors due to invalid html on export 2010-06-28 11:52:25 +09:00
facts.py add attr to tell if fact was pulled from db 2010-02-22 18:00:23 +09:00
fonts.py initial commit from hg 2008-09-27 23:50:03 +09:00
graphs.py strip elements out of range in review time graph 2010-02-01 07:16:40 +09:00
history.py fix reviewHistory table by rebuilding it 2009-03-15 07:27:44 +09:00
hooks.py allow arbitrary number of args in filters 2009-06-12 22:21:57 +09:00
lang.py translation patches from Piotr 2009-01-20 23:33:50 +09:00
latex.py use relative path in latex generation 2010-07-26 17:14:49 +09:00
media.py don't die when filename case is borked in media check 2010-08-16 19:28:45 +09:00
models.py document 'features' reuse, add tool to get var as string 2010-01-19 01:51:35 +09:00
sound.py unicode in error messages 2010-07-26 20:59:56 +09:00
stats.py patch from Piotr Kubowicz, fix some translations 2010-02-22 17:07:46 +09:00
stdmodels.py strip all chinese/japanese support out in favour of plugins 2009-06-10 22:58:28 +09:00
sync.py start work on scheduling refactor 2010-10-18 14:35:11 +09:00
tags.py don't create empty tags on export 2010-02-05 12:27:32 +09:00
utils.py patch from Chris Burel, fix qt html rewriting on 4.6.1+ 2010-02-23 17:25:12 +09:00