* fix PEP8 E721
do not compare types, for exact checks use `is` / `is not`, for instance checks use `isinstance()`
* remove redundant parentheses
* fix SiteWorker.run for empty job queue
local variable job is not assigned if queue was empty
when calling .run(), but it is used in exception handler.
* remove unreachable code in parse_diff_lines
* bug fix for unreachable code in is_worker_running
the code intended to check if *any* worker is running for
any site was *unreachable*.
this caused false negative results for site=None.
* check_failed_response: remove outdated part of docstring
* pull request template: fix relative path to LICENSE.txt
* fix typos
* use logger.warning, .warn is deprecated
This puts Vorta on PyQt6 and starts a new main branch 0.9.
---------
Co-authored-by: real-yfprojects <real-yfprojects@users.noreply.github.com>
Co-authored-by: Manu <3916435+m3nu@users.noreply.github.com>
Co-authored-by: yfprojects <62463991+real-yfprojects@users.noreply.github.com>
* feat: add a setting for files list views
* separate logic from data class
* make mode optional
* rename display mode methods
* refactor
* move code above connect signals comment
* reorder code
---------
Co-authored-by: yfprojects <62463991+real-yfprojects@users.noreply.github.com>
Co-authored-by: Manu <3916435+m3nu@users.noreply.github.com>
Borg v1.2.4 added new change types called `mtime` and `ctime` for the modification and the creation time of a file.
Our diff json parser doesn't support these changes yet.
The plain text parser doesn't need to be updated since it is only used for earlier versions of borg.
This also extends the tooltip in the diff view to show changes in `ctime` or `mtime` in a localised manner.
* src/vorta/views/diff_result.py (ChangeType): Add `CTIME` and `MTIME` linking to `MODIFIED`.
* src/vorta/views/diff_result.py (DiffData): Add fields `ctime_change` and `mtime_change`.
* src/vorta/views/diff_result.py (parse_diff_json): Parse the new change types.
* src/vorta/views/diff_result.py (DiffTree.data): Add time changes to tooltip in a human readable format.
* tests/test_diff.py : Update test data to include new change types. Add additional test cases for unittesting the new change types.
* src/vorta/views/extract_dialog.py: Add `ParseThread`, `ExtractTree` and `parse_json_lines`.
* src/vorta/views/extract_dialog.py (ExtractTree.__init__): Adjust signature.
* src/vorta/borg/list_archive.py (BorgListArchiveJob.prepare): Adjust format to
include additional attributes.
* src/vorta/views/archive_tab.py (ArchiveTab): Parse extract data using `ParseThread` and
open `ExtractDialog` afterwards.
* tests/test_archives.py (test_archive_extract): Update tests.
* src/vorta/borg/extract.py (BorgExtractJob.prepare): Adjust signature.
Handling of the data isn't implemented yet.
* tests/test_extract.py
* src/vorta/views/archive_tab.py (ArchiveTab.list_diff_result): Start `ParseThread` that does the processing and creates the dialog.
* src/vorta/views/archive_tab.py (ArchiveTab.show_diff_result): Implement method showing `DiffResultDialog`.
* src/vorta/views/diff_result.py (ParseThread): Move processing of diff results to this thread.
* src/vorta/assets/UI/diffresult.ui : Replace `okButton` with `QDialogButtonBox`
that has a `close` button.
* src/vorta/views/diff_result.py : Connect `buttonBox` instead of `okButton` to Dialog.
* src/vorta/assets/UI/diffresult.ui : Add title to `DiffResult` dialog and simplify file name display.
* src/vorta/assets/UI/diffresult.ui : Add comboBox to change display mode of tree view.
* src/vorta/views/diff_result.py : Connect comboBox to `DiffTree`.
* src/vorta/application.py : Remove `eventFilter` setup for palette changes.
* src/vorta/tray_menu.py : Connect directly to `app.paletteChanged`.
* src/vorta/views/archive_tab.py
* src/vorta/views/repo_tab.py
* src/vorta/views/schedule_tab.py
* src/vorta/views/source_tab.py
* src/vorta/assets/UI/diffresult.ui : Add buttons to keep folders on top when sorting and
to expand and collapse all items.
* src/vorta/views/diff_result.py : Connect the added buttons.
* src/vorta/assets/icons/angle-up-solid.svg : Add icon for `bCollapseAll`.
* src/vorta/views/diff_result.py : Add context menu to `treeView` that allows expanding
and copying of an item.
* src/vorta/views/diff_result.py : Add copy shortcut to `treeView`.
Subclass `treemodel.FileTreeModel` for the purposes of the diff dialog.
Rewrite diff output parsing.
Add sorting through `QSortFilterProxyModel`.
* src/vorta/views/diff_result.py (DiffResult.__init__): Remove doubled if statement.
* src/vorta/views/diff_result.py : Rename `DiffResult` to `DiffResultDialog`.
* src/vorta/views/diff_result.py (DiffTree.__init__): Remove the use of `QVariant`.
Since python has no type enforcement `QVariant` is not needed.
* src/vorta/views/diff_result.py (DiffTree): Subclass `treemodel.FileTreeModel` and add additional info tooltip.
* src/vorta/views/diff_result.py (parse_diff_json): Some changes for use with new model.
* src/vorta/views/diff_result.py (parse_diff_lines): Full regex based line parsing and
other modifications to go with the new model.
* src/vorta/views/diff_result.py (FileType): Enum of possible file types.
* src/vorta/views/diff_result.py (ChangeType): Enum of possible change types.
Currently all are mapped to `ADDED`, `MODIFIED` and `REMOVED`.
* src/vorta/views/diff_result.py (calc_size): Rename to `size_to_byte`.
* src/vorta/assets/UI/diffresult.ui : Move `alternatingRowColours` to the .ui file.
* src/vorta/views/diff_result.py (DiffResultDialog): Move `alternatingRowColours` to the .ui file.
* tests/test_diff.py : Fix tests for diff parser.
* src/vorta/views/diff_result.py : Connect to `sorted` of `DiffSortProxyModel`
to reveal selected items in view.
* src/vorta/views/partials/treemodel.py : Add `FileTreeSortProxyModel` with abstract code.
* src/vorta/views/diff_result.py (DiffSortProxyModel): Implement `FileTreeSortProxyModel`.
* src/vorta/views/diff_result.py (DiffItem): This variable holds the type `FileSystemItem[DiffData]`.
Currently an assert statement checks whether a change type was recognized.
This assert statement won't give any information on the actual change type that
is not implemented. Now a ValueError that mentiones the unknown change type in
its message will be raised instead.
* src/vorta/views/diff_result.py (parse_diff_json_lines): Replace assert statement by
if and raise statements.
Co-authored-by: real-yfprojects <real-yfprojects@users.noreply.github.com>
* add support for 'diff --json-lines' available in borg 1.1.16.
* fixes issue #901 (diff not handling CR/LF in filenames)
* improve `pretty_bytes()` formatting function
- It now heavily relies on regex. This was done in order to make the code more stable and easier to maintain.
- Share common code for file tree view between extract and diff.
There could exist a scenario when a +/- would be not at the start of the string.
Current code would fail in this case.
Instead we should check that the first character of the string is +/-.
This following on from PR # 356 https://github.com/borgbase/vorta/pull/356
An exception was thrown when diff of two archives were requested.
The exception was
'''
vorta/views/diff_result.py", line 52, in parse_line
size = int(size)
ValueError: invalid literal for int() with base 10: ''
'''
which was caused by diff line:
'''
0 B -2.6 kB home/philroche/.config/google-chrome/Profile 1/QuotaManager-journal
'''
This commit fixes the issue by only stripping +/- from string if they exist.
* Remove trailing whitespace causing flake8 failures