Damien Elmes
36024ed086
start reworking protobuf handling
...
Will allow us to cut down on boilerplate by automatically generating
code from RPC service definitions
2020-05-22 20:56:15 +10:00
Damien Elmes
7676748e6c
fix deletion of decks; allow deleting cards from default
...
https://anki.tenderapp.com/discussions/beta-testing/1967-2126-189-g7384df8f-crash-at-note-types-fields-save#comment_48353232
2020-05-22 11:24:56 +10:00
Damien Elmes
d31f2d8c23
move deck/notetype update hooks to gui
...
We need to migrate away from firing hooks in libanki, since libanki
methods may be running on a background thread, and hook consumers
typically expect the code to run in the main thread. We could document
it, but it would frequently be forgotten about, and could lead to
crashes.
https://anki.tenderapp.com/discussions/ankidesktop/41748-qobject-cannot-create-children-for-a-parent-that-is-in-a-different-thread-when-hitting-the-save-button-on-clayoutpy-window
2020-05-22 10:47:14 +10:00
Damien Elmes
d3557f380d
can't use _card.note_type() in clayout
2020-05-22 09:58:58 +10:00
Damien Elmes
ede0bb5420
add back most of .fields() to avoid breaking add-ons
2020-05-21 12:08:51 +10:00
Damien Elmes
2b46d4c73c
use longer delay in test_timing()
...
was intermittently failing in slow Windows CI
2020-05-21 09:33:49 +10:00
evandrocoan
04dc65ef78
Fixed HttpClient session not being closed
2020-05-20 19:20:41 -03:00
Damien Elmes
99462e39b8
fix deck age being used instead of collection
...
https://anki.tenderapp.com/discussions/ankidesktop/41637-bug-in-statistics
2020-05-20 19:46:01 +10:00
Damien Elmes
b3e8c63d65
update missed storage._Collection references
2020-05-20 19:45:46 +10:00
Damien Elmes
068cc43095
storage->collection
2020-05-20 17:58:28 +10:00
Damien Elmes
4f5fc9a63d
move storage logic into collection.py; fix export bug
...
https://anki.tenderapp.com/discussions/ankidesktop/41495-using-file-export-closes-the-collection-on-mwcoldb-if-the-browser-window-is-open
2020-05-20 17:43:34 +10:00
Damien Elmes
3f8a3afb78
fix extending limits in custom study
...
https://anki.tenderapp.com/discussions/beta-testing/1967-2126-189-g7384df8f-crash-at-note-types-fields-save
2020-05-20 14:13:40 +10:00
Damien Elmes
390b358e3f
Merge pull request #613 from evandroforks/add_missing_file_descriptors_close
...
Add missing close file descriptors using context managers
2020-05-19 14:39:07 +10:00
Damien Elmes
1cbb1bdbd0
catch protobuf error as well
...
Sad that we can't exhaustively match protobuf oneofs in
Python :-(
2020-05-19 13:10:20 +10:00
evandrocoan
c1c2e4d4e0
Simplified csvfile.py super call __del__ call
2020-05-18 16:20:33 -03:00
evandrocoan
1faf7450e4
Explicitly close the importer file descriptor
...
https://github.com/ankitects/anki/pull 613
2020-05-18 15:54:20 -03:00
evandrocoan
4fe92bfc6b
Add missing close file descriptors using context managers
2020-05-18 15:54:20 -03:00
Damien Elmes
3e156fdb49
bump version
2020-05-18 12:50:20 +10:00
Damien Elmes
4438be2c8d
protobuf tidyups
2020-05-18 09:26:14 +10:00
Damien Elmes
ef88cb59e6
fix syncing
2020-05-17 20:52:02 +10:00
Damien Elmes
94722c4fbb
minor tidyups in decks.py
2020-05-17 20:13:29 +10:00
Damien Elmes
e6379bc4d0
update current note type in backend
2020-05-17 20:01:16 +10:00
Damien Elmes
b676522e5c
fix renaming corner cases and decks.update()
...
- .update() should update a single deck and preserve usn by default,
as that's what existing code expects
- decks are automatically renamed when they conflict with an existing
name
2020-05-17 19:07:15 +10:00
Damien Elmes
2c19e171ed
handle deletion of default deck in backend; use + instead of _
2020-05-17 15:22:19 +10:00
Damien Elmes
6728da62c5
fix shared deck conf warning
2020-05-17 14:37:59 +10:00
Damien Elmes
336349d8d1
update before_upload()
2020-05-17 14:13:21 +10:00
Damien Elmes
a682865169
move deck config to protobuf
2020-05-17 13:28:41 +10:00
Damien Elmes
e85911c4e4
add option to limit deck tree counts to a particular node
2020-05-17 08:38:49 +10:00
Damien Elmes
ab97eaaf15
use deck tree for new/review count calculation
...
- wins back the performance lost by the decks and dconf not being
in memory, and the overhead of serializing data for DB calls
- card counts are no longer capped to 1000
- learn counts are currently still calculated separately - can't merge
v1 counts without changing the existing behaviour
- partially rendering the tree may yield more savings
2020-05-16 20:28:03 +10:00
Damien Elmes
8a42896fb8
speed up children() and add deck_and_child_ids()
2020-05-16 15:40:07 +10:00
Damien Elmes
07ee7d6f74
rework and merge updateCutoff
...
- the old "mutate but don't save" approach to resetting the "done today"
counts no longer works, and was inefficient anyway - now we just check
the day when returning the count
- remove separate implementation for v1 scheduler
This is a stop-gap solution - a bigger refactor will need to wait
until the deck/note type changes have stabilized.
2020-05-16 15:14:16 +10:00
Damien Elmes
c138917773
formatting
2020-05-16 14:59:47 +10:00
Damien Elmes
b3205e5d5d
only update active when selecting deck/resetting
...
We were previously doing this every time a card was answered.
2020-05-16 14:57:46 +10:00
Damien Elmes
f76b82d8ae
add find_deck_in_tree()
2020-05-16 13:05:20 +10:00
Damien Elmes
a249d61bf8
update unit tests to use deck_due_tree()
2020-05-16 12:10:40 +10:00
Damien Elmes
c60229779c
switch to new deck tree in deck browser
...
Saves us having to look up collapsed/filtered as we render, and gives
us type completion.
2020-05-16 10:52:14 +10:00
Damien Elmes
7de2fa5b58
remove unused default(Dynamic)Deck
2020-05-15 21:47:33 +10:00
Damien Elmes
cbfc9d5a87
handle default deck and filtered deck suppression in the backend
2020-05-15 21:21:10 +10:00
Damien Elmes
8a063a8a8c
remove unused deckDueList() and associated tree code
...
The progress bar add-ons appear to be the only active users of it;
they can switch their old code from iterating over the list to
simply locating the selected deck in deckDueTree(), as its counts should
summarize all the child decks.
2020-05-15 18:37:12 +10:00
Damien Elmes
a5dc561933
reuse stock basic type for default field/notetype/etc
...
Could add extra methods in the backend to allocate these in the
future, but as this is not a hot path, this should do for now.
2020-05-15 17:35:00 +10:00
Damien Elmes
dc6471ad40
fetch stock notetypes from backend
2020-05-15 17:08:24 +10:00
Damien Elmes
fd9fc8701c
add back card deletion count
...
cheaper to look up now that there's an index on notes.mid
2020-05-15 15:28:07 +10:00
Damien Elmes
4c0ebb9a03
<= in modified_after_begin for unit tests
2020-05-15 14:24:59 +10:00
Damien Elmes
6c4d6ad933
track changes in fields dialog as well
...
And avoid bumping schema until user actually saves, but warn at
start.
2020-05-15 13:59:44 +10:00
Damien Elmes
120dd7fc03
fetch/set remaining collection properties as required
2020-05-15 13:33:37 +10:00
Damien Elmes
8012d4ec69
fix exporting bug
...
can't/shouldn't pop up confirmation message on export
2020-05-15 11:03:34 +10:00
Damien Elmes
6dd31341f8
add "fill empty" checkbox
2020-05-14 20:58:45 +10:00
Damien Elmes
b2b33d9ad8
start reworking card layout screen
...
- front/back/css shown in tabs
- front/back preview switchable; only one webview needs to be loaded
- dropdown to select cloze number in preview
- search box to search in front/back/css
2020-05-14 15:24:29 +10:00
Damien Elmes
4a00ad075c
drop availOrds(), and use backend for getting cloze numbers
2020-05-14 12:14:00 +10:00
Damien Elmes
b59ea2d36f
remove availOrds() check in importer
...
Like adding individual cards, we now support importing material even
if it wouldn't generate any cards, and the old availOrds check can't
handle negated conditionals.
2020-05-14 10:27:54 +10:00
Damien Elmes
b08613e37d
remove obsolete preview code
2020-05-14 09:22:53 +10:00
Damien Elmes
257e893d95
update the card layout screen
...
- changes are now committed in bulk when closing the dialog,
and can be canceled
- it's not necessary to save the note to the database to preview it
- duplicate fields are now shown as duplicates in the top list
- redraw preview more quickly
- use + instead of _ when deduplicating names, as the latter is a
glob character
2020-05-13 17:24:49 +10:00
Damien Elmes
4815010da0
don't hide static template text when card is empty
2020-05-13 11:17:44 +10:00
Damien Elmes
14c0a5891b
fetch template and note fields in backend during normal card render
...
Saves having to serialize the note fields and q/a templates, which
is particularly a win when rendering question/answer in the browse
screen.
Also some work towards being able to preview notes without having to
commit them to the database.
2020-05-13 10:38:49 +10:00
Damien Elmes
21ac2c14a7
handle scheduling preferences in the backend
2020-05-12 21:13:34 +10:00
Damien Elmes
2eaa759478
fetch timing_today() params in backend
2020-05-12 21:13:34 +10:00
Damien Elmes
1018204e4f
switch server back into a bool and rely on config
2020-05-12 21:13:34 +10:00
Damien Elmes
befa66fb27
fix default rollover
2020-05-12 21:13:34 +10:00
Damien Elmes
d7f9bccd1e
rewrite DB check
...
- notes with wrong field count are now recovered instead of
being deleted
- notes with missing note types are now recovered
- notes with missing cards are now recovered
- recover_missing_deck() still needs implementing
- checks required
2020-05-12 21:13:34 +10:00
Damien Elmes
667f9e6554
bulk tag add/remove/update; canonify on note save
...
also remove the tag list updated hook - we'll need a better solution in
the future than having the library code call back into the GUI code
2020-05-12 21:13:34 +10:00
Damien Elmes
0a87b1ef2c
support disabling unicode normalization in notes
2020-05-12 21:13:34 +10:00
Damien Elmes
85528cabc5
use backend for genCards() and updateFieldCache()
2020-05-12 21:13:34 +10:00
Damien Elmes
866231f661
add pep8 name for findReplace
2020-05-12 21:13:34 +10:00
Damien Elmes
2268a9c241
fix tag saving in notes
2020-05-12 21:13:34 +10:00
Damien Elmes
8c04718541
update find&replace in browser
...
sadly the UI still stutters on large selections - the calls
to get the selected rows from Qt are really slow.
2020-05-12 21:13:34 +10:00
Damien Elmes
ad1c519d1c
move find&replace to backend
2020-05-12 21:13:34 +10:00
Damien Elmes
2641862b56
update fields and models diags
...
- field changes are now applied when user closes dialog with save
button, in bulk
- models diag now fetches note type and saves it as required, instead
of holding on top a copy that can grow stale as changes are made in
subdialogs
- both dialogs now perform operations in the backend
- note.model() now fetches the note type on the fly, instead of
holding on to a copy that may become stale
2020-05-12 21:13:34 +10:00
Damien Elmes
2d0a6283e4
add an index on notes(mid) so we can avoid the tablescan
2020-05-12 21:13:34 +10:00
Damien Elmes
ee97637cab
release GIL on notetype save/delete
2020-05-12 21:13:34 +10:00
Damien Elmes
0c4eb401f7
remove invalidated part of test_review_limits
...
Previously if the sum of child counts was above the parent's limit,
the deck tree would show a parent count above the parent's limit, and
clicking on the parent would show a lower count. The new deck tree
code never shows a parent count above the parent's limit, so this
part of the test is no longer valid.
2020-05-12 21:13:33 +10:00
Damien Elmes
02ea986f19
run black
2020-05-12 21:13:33 +10:00
Damien Elmes
7d14008216
remove dconf cache
2020-05-12 21:13:33 +10:00
Damien Elmes
7ef72aba04
use the backend for the deck due tree
...
- approx 3x faster on a large test deck
- counts are no longer capped to 1000 in the tree
2020-05-12 21:13:33 +10:00
Damien Elmes
267be1b050
add missing decks in backend
...
- need to compare parents with unicode case folding
- duplicate check enforced by the DB
2020-05-12 21:13:33 +10:00
Damien Elmes
e46dd4e41f
remove pybackend.py
2020-05-12 21:13:33 +10:00
Damien Elmes
13d23cd24b
speed up browser load by rendering deck tree in Rust and skipping counts
2020-05-12 21:13:33 +10:00
Damien Elmes
24ef0cc6f1
add separate decks table, and start on moving deck handling to Rust
...
The Python tests are passing, but there are still a number of issues
to work through, and the table/protobuf schema is not yet finalized.
2020-05-12 21:13:33 +10:00
Damien Elmes
2a17f99eaa
remove unused _updateRequired and associated code
2020-05-12 21:13:33 +10:00
Damien Elmes
d1cc4684d2
hook the empty cards code up to the GUI
2020-05-12 21:13:33 +10:00
Damien Elmes
6350e18680
hook up new note and note type handling
...
- notetypes are fetched from the DB as needed, and cached in Python
- handle note type changes in the backend. Multiple operations can now
be performed in one go, but this is not currently exposed in the GUI.
- extra methods to grab sorted note type names quickly, and fetch by
name
- col.models.save() without a provided notetype is now a no-op
- note loading/saving handled in the backend
- notes with no valid cards can now be added
- templates can now be deleted even if they would previously
orphan notes
a number of fixmes have been left in notes.py and models.py
2020-05-12 21:13:33 +10:00
Damien Elmes
2e84604903
add an extra second to a unit test
2020-05-12 21:13:33 +10:00
Damien Elmes
4566a35085
expose stock notetypes
2020-05-12 21:13:33 +10:00
Damien Elmes
f2e9146e52
drop legacy newBury option
2020-05-12 21:13:33 +10:00
Damien Elmes
65f12eeda2
add stock note types in backend
2020-05-12 21:13:33 +10:00
Damien Elmes
27d2fb148a
bump version
2020-05-11 19:28:17 +10:00
Damien Elmes
cad3d9e74d
python formatting+lints
2020-05-08 17:30:27 +10:00
Damien Elmes
0cb4bb7a78
bundle socks
...
https://anki.tenderapp.com/discussions/ankidesktop/39801-sync-error
2020-05-08 15:26:19 +10:00
Damien Elmes
94222e8911
fix due of preview cards being reset
...
https://anki.tenderapp.com/discussions/ankidesktop/41243-undo-function-causes-error-in-filtered-decks
2020-05-08 15:25:54 +10:00
Damien Elmes
0160c80f67
fix error undoing card in preview queue
...
https://anki.tenderapp.com/discussions/ankidesktop/41243-undo-function-causes-error-in-filtered-decks
2020-05-08 15:25:38 +10:00
Damien Elmes
87fd18a3a9
fix v1 log appearing next to export
2020-05-05 16:15:49 +10:00
Damien Elmes
06a69a72be
fix unnecessary spaces being added to notes with empty tags
2020-05-04 21:53:22 +10:00
Damien Elmes
c2223610f1
bump version
2020-05-02 10:22:00 +10:00
evandrocoan
02c5091d1b
Stop requiring ankirspy while running on development because
...
maturin develop hides the package from pip
https://github.com/PyO3/maturin/issues 304
2020-04-30 23:37:19 -03:00
evandrocoan
3dfe228b3e
Add missing aqt and anki modules dependency requirements
2020-04-30 17:30:22 -03:00
Damien Elmes
cffe9fb7bd
if conf points to an invalid configuration, fall back on default
2020-04-30 11:45:13 +10:00
Damien Elmes
65a9eaa418
expose clock hack via env var
...
closes #594
2020-04-30 09:33:02 +10:00
Damien Elmes
fb280937d6
fix tags with missing leading/trailing spaces in DB check
2020-04-30 08:54:17 +10:00
Damien Elmes
39070abb89
drop type answer requirement special case
...
While it makes no sense to have the typing box on the front without
another non-empty field, "the front of this card is empty" when
a typing box is on the template seems to be confusing some users, so
it is clearer to show them the box.
2020-04-29 21:29:16 +10:00
Damien Elmes
91248aa8cf
bump version
2020-04-28 08:57:56 +10:00
Damien Elmes
d005dcc2bf
Merge pull request #587 from BlueGreenMagick/tags
...
remove unnecessary code
2020-04-27 19:25:42 +10:00