Damien Elmes
cc12c8c573
need to rebuild counts when cutoff updated
2010-11-04 01:51:16 +09:00
Damien Elmes
0535f0561c
redundant code in answerCard()
2010-11-03 23:45:44 +09:00
Damien Elmes
3f3f797348
don't space failed cards; make sure card type is calculated after stats update
2010-11-03 00:29:56 +09:00
Damien Elmes
46790f2e92
remove (incorrect) code in sync, is covered on deck load anyway
2010-11-02 22:34:10 +09:00
Damien Elmes
a68334220a
fix suspensions
2010-11-02 22:30:57 +09:00
Damien Elmes
73119c93cf
restore inactive tags with a more efficient query
2010-11-02 02:33:13 +09:00
Damien Elmes
37c15a320e
make sure we don't fail if attempting to reset revearly cards before upgrade
2010-11-02 02:04:54 +09:00
Damien Elmes
2c5ac66083
type/priority changes, cram/rev early refactor, more
...
* Adjust type to remove cards from the queues, so we don't have to rebuild
priorities to restore them:
Type -= 3 when suspending
Type += 3 when burying
Type += 6 when cramming / reviewing early
We still need to adjust priorities for backwards compatibility, but this can
be removed in the future.
* Factor out scheduler-specific code in answerCard(), so the different
schedulers are now fully modular
* Differentiate between a card's current queue and its type
* Make sure dueCutoff cuts off at the chosen offset instead of midnight
2010-11-02 01:59:20 +09:00
Damien Elmes
785ddc3786
make sure to set card limit on scheduler change
2010-10-31 18:59:49 +09:00
Damien Elmes
ce82861357
make sure to update field cache when adding fact
2010-10-31 18:17:49 +09:00
Damien Elmes
c4a1f807ec
update cram for new cardActive() handling
2010-10-31 18:12:16 +09:00
Damien Elmes
cc8f619458
remove support for inactive tags
...
Unlike active tags, they are not able to be implemented efficiently, and they
duplicate the functionality of manually suspending cards
2010-10-29 21:31:40 +09:00
Damien Elmes
2967819882
fix fid queries
2010-10-29 19:41:40 +09:00
Damien Elmes
621d11a6da
don't generate cards if the question is blank, again
2010-10-29 01:05:33 +09:00
Damien Elmes
7e6f4907b0
make sure we don't count/grab cards multiple times
2010-10-28 20:33:19 +09:00
Damien Elmes
46ba2db87a
use new field cache so we can ignore html in std search
2010-10-27 21:22:29 +09:00
Damien Elmes
731c4100f9
wrap the remaining really long lines
2010-10-27 21:06:45 +09:00
Damien Elmes
4cce768c70
update search code for new scheduler
2010-10-27 21:03:48 +09:00
Damien Elmes
8c7322c974
merge marcus' searching code
2010-10-27 20:54:42 +09:00
Damien Elmes
34d6efe1df
marcus: handle html entities properly when stripping html
2010-10-27 20:12:00 +09:00
Damien Elmes
8ce0ff5b8b
add a field cache for searching without html
2010-10-27 19:00:49 +09:00
Damien Elmes
9f9841cb22
use a join instead of a subquery as sqlite can optimize it better
2010-10-26 20:21:59 +09:00
Damien Elmes
c50b7e61cb
new indices, make sure to set type when reviewing early
...
- new type, combinedDue for failed cards & count checks
- only reset() on deck load if not already done
- remove isDue from dynamic indices but leave old ones around for now
2010-10-26 20:10:05 +09:00
Damien Elmes
ea3bf14019
if using no points of precision, take the floor
2010-10-26 12:54:58 +09:00
Damien Elmes
5bc7c390a0
make sure to respect failed card timing, fix default hard times
2010-10-26 11:46:35 +09:00
Damien Elmes
27b7ccb41f
set deck vars before updating the cutoff
2010-10-25 15:46:58 +09:00
Damien Elmes
71de076309
no need to adjust types when rebuilding priorities
2010-10-25 15:38:50 +09:00
Damien Elmes
c1d79b856f
superfluous rowcount
2010-10-25 15:36:43 +09:00
Damien Elmes
33e6a17141
make sure to set isDue=0 for spaced cards too, for backwards compat
2010-10-25 15:28:59 +09:00
Damien Elmes
b0e4748a1c
make sure to update combinedDue with the new value
2010-10-25 14:35:05 +09:00
Damien Elmes
de18f59474
compat hack for suspended cards on older platforms
2010-10-24 14:21:21 +09:00
Damien Elmes
1f20442921
require dingsbums decks to use a different name so we don't conflict
2010-10-24 13:26:51 +09:00
Damien Elmes
ecc99780e4
add bury support
2010-10-24 13:06:16 +09:00
Damien Elmes
1d89be0a1e
make sure to set isDue=0 when answering a card for compatibility reasons
2010-10-24 13:01:13 +09:00
Damien Elmes
4c76d25b05
remove obsolete 'inactive' from findCards()
2010-10-24 12:55:33 +09:00
Damien Elmes
a3040d1fb4
suspend leeches after they've been removed from the queue
2010-10-24 12:32:40 +09:00
Damien Elmes
fbae42d8ef
tweak deck stats for new scheduling
2010-10-24 12:26:18 +09:00
Damien Elmes
1e2d88dccf
make sure to consider active tags when calculating next due card
2010-10-24 11:47:47 +09:00
Damien Elmes
057414f404
use same active/inactive limits for failed queue
2010-10-23 16:15:42 +09:00
Damien Elmes
d1f1f914ad
python2.7 win32 compat fix
2010-10-23 13:58:03 +09:00
Damien Elmes
df2ae3b63b
give each scheduler a name
2010-10-20 18:03:10 +09:00
Damien Elmes
94ad0cb95e
new cram code, remove refs to inactive cards
...
- cramming is now a separate scheduler type
- correctly answering a card while cramming causes its scheduling to be
changed in the standard review too
- options to sort cards by earliest modified, ordered, random
- render priority 0 obsolete, as it's all done at queue generation time now
2010-10-20 13:12:17 +09:00
Damien Elmes
30a6f04708
make queue limit configurable, fix bulk fetching of cards for ankionline
2010-10-19 19:45:57 +09:00
Damien Elmes
b7e3d87e5d
new active/inactive handling, bigger queues
...
- separate categories for new & review cards
- 'only these tags' + 'none of these tags'
2010-10-19 19:17:52 +09:00
Damien Elmes
be4dea39b1
more scheduler updates
...
- reimplement reviewEarly and newEarly by replacing parts of the scheduler,
instead of adding special conditions
- remove references to isDue and priority (1,2,3,4) which is not necessary
anymore
- add option to switch between per-day scheduling and due now scheduling
- newCardsToday() -> newCardsDoneToday()
- don't decrement counts for suspended cards
- make sure to update type when suspending/unsuspending
- fix findCards()
- set hardInterval = 1-1.1 on upgrade, or the default per day scheduling doesn't
make sense
2010-10-18 18:01:19 +09:00
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
Damien Elmes
747a28556a
when determining which card templates to use, replace text: too
2010-10-18 11:34:02 +09:00
Damien Elmes
8df9111b50
only copy used media on import/export
2010-10-16 10:29:39 +09:00
Damien Elmes
e010ef8062
add clock skew compensation again
...
this has the negative effect of causing multiple full syncs if syncing
multiple times within a 5 minute period of the previous full sync, but it
makes it much less likely that people's due counts will fall out of sync
2010-10-02 14:47:33 +09:00
Damien Elmes
99ba3f09c8
catch missing facts at end of sync
2010-09-12 12:21:39 +09:00
Damien Elmes
1f239c1e67
direct user to help page when file not in utf-8
2010-09-02 11:45:33 +09:00
Damien Elmes
ea32bce31c
support escaped quotes in csv file, ignore bom marker
2010-08-30 20:40:28 +09:00
Damien Elmes
4437024ecc
fix a bug caused by sqlite not understanding unicode case
2010-08-26 18:38:08 +09:00
Damien Elmes
c916478868
bump version number
2010-08-19 13:42:19 +09:00
Damien Elmes
cb533d9c02
don't die when filename case is borked in media check
2010-08-16 19:28:45 +09:00
Damien Elmes
9332444dfd
add hook for when undo is finished
2010-08-16 19:27:00 +09:00
Damien Elmes
84cb81854b
faster tag updating for large number of tags
2010-08-16 18:52:55 +09:00
Damien Elmes
ff60f105d9
add extra minor version number to ensure betas get upgraded
2010-08-02 13:26:48 +09:00
Damien Elmes
5e7c62bca5
don't compensate for clock skew
2010-07-30 18:15:24 +09:00
Damien Elmes
e956aa9afb
remove obsolete function
2010-07-27 22:54:51 +09:00
Damien Elmes
d3fb189a72
improved lastSync/modified handling
...
- never bump deck mod while syncing
- set lastSync to current time, not deck modified time
- don't update lastSync until the final part of the sync
- lower clock skew allowance to ~5 minutes
- bump full sync threshold to 1000 modified items
2010-07-27 22:46:04 +09:00
Damien Elmes
ecb6dbe69a
unicode in error messages
2010-07-26 20:59:56 +09:00
Damien Elmes
55194f8aa7
ensure cardmodel/fieldmodels work when given a string too
2010-07-26 17:15:05 +09:00
Damien Elmes
5fe42791c3
use relative path in latex generation
2010-07-26 17:14:49 +09:00
Damien Elmes
61a7d6d79e
make sure we match a given model even when given a string
2010-07-24 14:28:24 +09:00
Damien Elmes
a68366b5c4
fix card ordering when generating cards by basing card creation off fact
2010-07-21 19:46:27 +09:00
Damien Elmes
f3d2965e12
Revert "don't delete dangling facts when deleting cards" hack
...
We don't need this any more as we do conflict handling.
This reverts commit 880219567e .
2010-07-21 18:37:35 +09:00
Damien Elmes
6852b0acda
bump mod time on full sync to server, ensure lastSync matches
2010-07-21 18:37:05 +09:00
Damien Elmes
f58651cf1b
bump version number
2010-07-11 17:42:05 +09:00
Damien Elmes
b8401eff22
ignore parse errors due to invalid html on export
2010-06-28 11:52:25 +09:00
Damien Elmes
f03000d27b
remove string exceptions for python2.6
2010-06-10 13:24:46 +09:00
Damien Elmes
880219567e
don't delete dangling facts when deleting cards
...
If the user is not careful to only sync when one side has been modified, they
can end up with cards on one side and not the other. If they then delete a
card, deleting the dangling facts also deletes the fact associated with the
not-yet-synced card. In order to avoid this, we avoid deleting dangling facts
until a DB check.
2010-05-21 06:56:38 +09:00
Damien Elmes
edf121f8dc
add hex cache for dumb clients, make sure not to mark deck modified
2010-05-16 01:01:38 +09:00
Damien Elmes
5616e679f5
cache the css as a deck var, don't accidentally send it in sync
2010-05-10 21:32:36 +09:00
Damien Elmes
fd1953bfb5
convert to a list, not tuples, so we can modify on the fly
2010-05-07 16:05:35 +09:00
Damien Elmes
f69d946f83
more sqlalchemy compat
2010-05-02 16:15:32 +09:00
Damien Elmes
554d7021e0
don't specify an input index by default
2010-04-21 13:31:59 +09:00
Damien Elmes
a1d3f13f0a
update for sqlalchemy 0.6
2010-04-21 13:21:16 +09:00
Damien Elmes
1be5943903
remove erroneous comment
2010-04-16 01:25:47 +09:00
Damien Elmes
21ec548680
more explicit setting of creation time, don't fiddle with ordinals for rand
2010-04-15 23:05:14 +09:00
Damien Elmes
783751d7ea
support ? for single char search
2010-04-06 18:47:39 +09:00
Damien Elmes
af66630f07
delay beautifulsoup import until export
2010-04-01 22:57:26 +09:00
Damien Elmes
7f75364fbe
delete mediamissing tags before setting
2010-03-28 10:18:13 +09:00
Damien Elmes
465a890bcd
don't add = as a delim
2010-03-16 00:39:41 +09:00
Albert Peschar
ed50fb20d9
auto-detect '=' as import delimiter, strip fields
2010-03-14 11:40:31 +01:00
Damien Elmes
c8d9bac5df
clarify one way sync error
2010-03-05 09:27:11 +09:00
Damien Elmes
09f51e5028
when adding facts, use a small due increment for each card model
2010-03-03 02:51:05 +09:00
Damien Elmes
80197d9c2f
when generating cards, use a small creation date increment
2010-03-03 02:49:55 +09:00
Damien Elmes
27694adf1a
patch from Chris Burel, fix qt html rewriting on 4.6.1+
2010-02-23 17:25:12 +09:00
Damien Elmes
7111b3b924
add attr to tell if fact was pulled from db
2010-02-22 18:00:23 +09:00
Damien Elmes
8a28df1a80
patch from Piotr Kubowicz, fix some translations
2010-02-22 17:07:46 +09:00
Damien Elmes
220670a048
update combinedDue attr in cardAnswered(), not just on disk
2010-02-22 16:41:20 +09:00
Damien Elmes
472b68b831
don't backup when importing / saving as
2010-02-20 10:03:39 +09:00
Damien Elmes
bc345d3711
create backup dir if missing
2010-02-20 09:54:54 +09:00
Damien Elmes
7c8e612704
use a constant for chunk size
2010-02-18 17:36:54 +09:00
Damien Elmes
4769bfa7a5
another hack for w32's low timer resolution
2010-02-12 16:03:48 +09:00
Damien Elmes
6857233eef
bump version
2010-02-12 14:40:45 +09:00
Damien Elmes
4a1dd99cc9
bump version
2010-02-09 01:55:01 +09:00
Damien Elmes
6dce4e0602
add progress dialog to save as
2010-02-09 01:52:06 +09:00
Damien Elmes
ae690ccea3
don't bother with an integrity check if the deck is unchanged
2010-02-09 01:36:39 +09:00
Damien Elmes
715c82aba9
remove debugging line in exporting
2010-02-09 01:31:05 +09:00
Damien Elmes
295bacacd8
forget sync name on saveas
2010-02-09 01:30:16 +09:00
Damien Elmes
095a7dbb6f
implement save as without attaching a db
...
Attaching new to old causes old to be implicitly commited.
We also can't access old from new if a write lock has been
taken out, so the only option left is to move all the data
through Python and take the speed hit.
2010-02-09 01:27:49 +09:00
Damien Elmes
dfd88cc4c1
don't set modtime of 0
2010-02-06 01:20:50 +09:00
Damien Elmes
c659660864
don't send acq cards when there are cards to review & new cards shown last
2010-02-05 13:07:42 +09:00
Damien Elmes
09f51e27f0
return newly created card ids when generating cards
2010-02-05 12:59:54 +09:00
Damien Elmes
582a9dd290
don't create empty tags on export
2010-02-05 12:27:32 +09:00
Damien Elmes
187caa874b
make sure to remove deck if exists before exporting into it
2010-02-02 00:28:15 +09:00
Damien Elmes
04ba9c9a4e
strip elements out of range in review time graph
2010-02-01 07:16:40 +09:00
Damien Elmes
8378f71c73
since interval is updated first, use lastInterval in cardIsBeingLearnt()
2010-02-01 05:11:34 +09:00
Damien Elmes
9b61d86096
place a minimum bound on average factor
...
Since SM2's grading has a bias towards starting high and going down (fail/hard
decrease the interval more than easy increases it), more conservative users
find their average interval reaches the minimum allowable interval and the
times given by hard/good start to converge. In the future, the whole concept
of using the average interval for new cards should be revisited to see if the
data supports it
2010-02-01 05:01:23 +09:00
Damien Elmes
3106ecd80d
change location of matplotlibrc file in frozen distrib
2010-02-01 04:44:39 +09:00
Damien Elmes
d8ba9e1987
revert ease1 change
...
suspicious of the previous change, I had a look at the example pascal and
found the EF _was_ actually updated on a failure. The spec is misleading there.
2010-02-01 04:44:27 +09:00
Damien Elmes
095ac330b5
fix first-time latex generation in a deck with no media dir
2010-02-01 03:33:13 +09:00
Damien Elmes
87a0e087e5
tweak scheduler
...
- don't touch factor on fail, as per SM2 specs
- hard code no-punish-on-hard 'learning period' to 7 days so users who tweak
the initial intervals aren't punished too early
2010-02-01 03:28:46 +09:00
Damien Elmes
863d3d8319
add stripMedia()
2010-01-29 20:20:00 +09:00
Damien Elmes
ec263d0d63
if there is a period, always use the plural
2010-01-29 20:05:04 +09:00
Damien Elmes
9172c9b697
remove obsolete time span pair code
2010-01-29 19:28:38 +09:00
Damien Elmes
c90828349c
remove obsolete reference to card tags, don't store card tags on import
2010-01-23 10:59:40 +09:00
Damien Elmes
ea2fa24fed
add progress info to card/fact export
2010-01-23 10:51:02 +09:00
Damien Elmes
b4f1d6622a
use html parser on text export instead of fragile regex
2010-01-23 08:13:43 +09:00
Damien Elmes
28ff71a031
fix dingsbums tests
2010-01-23 06:42:02 +09:00
Damien Elmes
1ae05a8bc7
limit auto-detected delimiter to a known-good set
2010-01-23 06:00:06 +09:00
Damien Elmes
a6a7782030
fix another windows timer resolution bug
2010-01-22 02:16:57 +09:00
Damien Elmes
33aede4d56
document 'features' reuse, add tool to get var as string
2010-01-19 01:51:35 +09:00
Damien Elmes
bf35112bd0
improve latex error message
2010-01-12 04:38:44 +09:00
Damien Elmes
c7340edd6f
strip html for text: fields
2010-01-08 22:02:16 +09:00
Damien Elmes
20da165b6e
check backup integrity using existing db connection to avoid locking issues
2010-01-04 22:37:14 +09:00
Damien Elmes
33ec7ce133
clarify comment
2009-12-02 03:38:46 +09:00
Damien Elmes
ec9a7c3755
check db integrity on backup
2009-11-30 14:31:47 +09:00
Damien Elmes
6a8c19a889
use threadlocal for single user access
2009-11-30 08:34:31 +09:00
Damien Elmes
d44cbd5518
remove logging hack
2009-11-30 08:11:34 +09:00
Damien Elmes
e2f306ae3b
fix cards/day amount
2009-11-29 19:47:53 +09:00
Damien Elmes
84b88507a2
tweak importing message
2009-11-27 19:53:24 +09:00
Damien Elmes
4bea904dc6
give the card id on cardAnswered hook, not old card
2009-11-27 15:59:58 +09:00
Damien Elmes
17630fa339
close text file after import
2009-11-27 15:27:01 +09:00
Damien Elmes
a50ec2649a
fix undo of deck properties bug
2009-11-27 15:26:03 +09:00
Damien Elmes
093395b9e0
Revert "add 30 second timeout to all sync ops"
...
This reverts commit cbc23e5231 .
2009-11-24 23:35:34 +09:00
Damien Elmes
feaedccc9a
fix field ordinals on db check
2009-11-19 13:07:43 +09:00
Damien Elmes
c3833a6a10
quote loadfile cmd
2009-11-08 14:47:17 +09:00
Rick Gruber-Riemer
4971069856
Added importing for DingsBums?! decks
2009-11-08 14:39:09 +09:00
Damien Elmes
7e2fd90963
Merge git://github.com/jmazon/libanki
2009-10-31 15:50:56 +09:00
Jean-Baptiste Mazon
fe19dd806d
rewrite field names as tags when importing with tagDuplicates
2009-10-31 00:35:46 +01:00
Damien Elmes
9671d15371
rewrite expression to be clearer
2009-10-25 19:48:28 +09:00
Damien Elmes
cbc23e5231
add 30 second timeout to all sync ops
2009-10-04 19:53:12 +09:00
Damien Elmes
164b0583c3
unlink tmp file after full up
2009-10-04 19:33:18 +09:00
Damien Elmes
4e83a67e00
lowercase is:foo searches
2009-10-04 19:30:21 +09:00
Damien Elmes
7d8904a65d
factor spacing into due time
2009-10-01 20:17:31 +09:00
Damien Elmes
9f182b4d61
new stats
2009-10-01 17:44:43 +09:00
Damien Elmes
c786479268
timeout @ 60
2009-09-28 09:22:57 +09:00