Commit Graph

809 Commits

Author SHA1 Message Date
Jeff Ramnani 634f984e78
Improve metered connection detection for macOS. By @jramnani (#1902)
* Add dependency for pyobjc-CoreWLAN on darwin

* Rename existing implementation with Android

The current implementation was tested with Android, but does not work
with iOS.

Move the existing implementation and include android in the name to make
room for adding a new iOS metered connection detection strategy.

* get_current_wifi works with objc

Switch from using command line tools to using the Objective-C Cocoa API
to get the Wi-Fi status information.

Cocoa has an API to specifically check whether a Wi-Fi connection is
using a Personal Hotspot on iOS.

I'm using a private method to get the Wi-Fi interface object in Cocoa.
The reason for this is that cleaning up mocks on PyObjC/ObjC objects is
much harder than mocking out methods on objects in our control. Using
test doubles also let's me check for different states the Wi-Fi network
could be in.

* get_known_wifis works on darwin

Use the networksetup command on macOS to get the list of the user's
Wi-Fi networks.

  networksetup -listpreferredwirelessnetworks bsd_device

It looks like this command and option has existed on macOS since at
least 2013.

Also add some type annotations around the PyObjC return values to help
the reader know what they're dealing with at each step.

* Add test for get_current_wifi when wifi is off

The user might have Wi-Fi turned off. Account for that use case.

* Add iOS Personal Hotspot support to is_network_metered

The DarwinNetworkManager can now determine if the user is connected to
a Personal Hotspot Wi-Fi network from iOS.

Account for whether the user has Wi-Fi turned on and off.

* Refactor to avoid deprecated API in Cocoa

According to Apple's developer documentation, creating CWInterface
objects directly are discouraged. Instead, they prefer to use
CWInterface objects created by CWWiFiClient.

This also happens to be more compliant with Apple's application sandbox.
Creating CWInterface objects directly accesses raw BSD sockets which is
not allowed in the sandbox.

More details here:
https://developer.apple.com/documentation/corewlan/cwinterface

* Add test case for blank Wi-Fi network name

I have one of these in my list of networks in Vorta. And this also
covers a missing branch in get_known_wifis.

* Move private method below public methods

This is to provide a little more clarity. Especially since this class is
subclassing another one.

* Account for when there is no wifi interface

When a Mac does not have a Wi-Fi interface, CWWiFiClient.interface() can
return None.

Update the type annotation to mark it as Optional, and account for the
null condition in the other methods.

* Fix type annotation error

The CI tests failed on python 3.8.

I used the wrong type annotation to describe a list of SystemWifiInfo's.

The tests now pass for me when I run 'make test-unit' using a python 3.8
interpreter.

* Fix linter issue with imports
2024-02-02 12:05:47 +00:00
Hofer-Julian 0cc15e3d3d
Update appdata.xml (#1885)
The appdata.xml doesn't pass validation of flathub

1. The `launchable` tag is nowadays required
2. Flatpak doesn't like the beta releases. In the end, it only made sense to remove them from the xml
2024-01-25 11:06:56 +01:00
Manu 4665972076
Fix issue after Qt6 migration to save allowed Wifis (#1903) 2024-01-20 10:26:06 +00:00
Manu 9cc7a98838 Minor: color settings icon 2024-01-11 08:27:25 +00:00
Manu 1d85cb48dc Bump version to v0.9.1 2024-01-10 13:20:01 +00:00
Manu be6e08552a
Update screencast for v0.9 (#1881) 2024-01-10 13:11:38 +00:00
TW 675010e401
Random cleanups by @ThomasWaldmann (#1879)
* 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
2024-01-09 08:06:48 +00:00
Manu 1f062359d8 Minor: include exclusion presets for macos package 2023-11-30 11:34:03 +00:00
Manu 3fdc4eca3c Bump version to v0.9.1-beta3 2023-11-30 07:09:49 +00:00
Manu b502fc3fd3
Exclude GUI. By @diivi (#1846) 2023-11-24 21:19:28 +00:00
Adwait c9f170aecf
Backup settings.db before migrations. By @AdwaitSalankar (#1848) 2023-11-24 15:29:28 +00:00
Stefano Rivera 98b64621c2
Loosen platformdirs dependency (#1843)
4.x is backwards compatible with 3.x except that site_cache_dir has
moved to /var/cache. Vorta doesn't use this.

https://github.com/platformdirs/platformdirs/releases/tag/4.0.0
2023-11-14 15:54:20 +00:00
Manu b3550991e3 Bump version to v0.9.1-beta2 2023-10-27 13:39:42 +01:00
Manu 4c7b119b3e Minor: add missing notarization env var 2023-10-27 12:07:59 +01:00
Manu 8d0870ea3b
Update macOS notarization for use with notarytool (#1831) 2023-10-24 11:37:40 +01:00
Ted Lawson 071dd86ded
Profile sidebar and new setting interface. By @bigtedde (#1809) 2023-10-24 09:36:50 +01:00
Ted Lawson 60f9fc27b4
Unit test improvements and coverage increase. By @bigtedde (#1787) 2023-10-01 09:19:39 +01:00
Manu c807f93faf Bump version to v0.9.1-beta1 2023-09-27 11:20:55 +01:00
Ted Lawson 15fa46ff85
Improve SSH key process. By @bigtedde (#1802) 2023-09-26 14:22:54 +01:00
Ted Lawson cff00ad8e1
Add '.log' suffix to log files. By @bigtedde (#1710) 2023-09-25 22:51:17 +01:00
Ted Lawson 43140beda1
Refactor archive context menu. By @bigtedde (#1793) 2023-09-19 11:09:55 +01:00
Pradyot Ranjan 3573bdbc78
Minor: README type. By @prady0t (#1822) 2023-09-19 10:02:47 +01:00
Ted Lawson 4350f78de5
Prevent borg operation while renaming. By @bigtedde (#1791) 2023-09-11 20:29:07 +01:00
Sam 7d2b3634f1
Changed label and tooltip for startup setting of Vorta (#1804)
This makes the setting easier to comprehend and removes ambiguity between the autostart setting.

* modifed foreground label and tooltip
2023-09-09 07:18:09 +00:00
Sam 8c82c4069d
Changed title of adding `new repo` and `existing repo`. By @SAMAD101 (#1810) 2023-09-06 09:48:55 +02:00
Ted Lawson 567a3546ae
Reduce number of tests. By @bigtedde (#1780) 2023-08-21 20:31:51 +01:00
Ted Lawson e5c9b2245a
Improve import/export feature test coverage. By @bigtedde (#1774) 2023-08-17 18:05:42 +01:00
jetchirag 3bfa78bf04
Fix health indicator always being green in extract view.
Fixes #1776. Now the indicator is red for unhealthy files.

* src/vorta/views/extract_dialog.py (ExtractTree.data): Set red instead of green colour for unhealthy files.
2023-08-17 18:49:17 +02:00
Ted Lawson 2caa093541
Source tab test improvements. By @bigtedde (#1772) 2023-08-17 11:09:00 +01:00
Ted Lawson 81920ea3f0
Repo test improvements. By @bigtedde (#1771) 2023-08-17 11:08:03 +01:00
Ted Lawson e85ec38c65
Add diff tests. By @bigtedde (#1770) 2023-08-17 11:06:36 +01:00
Ted Lawson ee71bcae9a
DRY tests, increase coverage. By @bigtedde (#1769) 2023-08-17 11:05:52 +01:00
Ted Lawson fb42614524
Add test utility functions (#1768) 2023-08-17 11:04:33 +01:00
Divyansh Singh 30c572250f
Inline archive renaming. By @diivi (#1734) 2023-08-15 12:38:51 +01:00
Manu 92f285f623
Add full font licenses, add Google icons to README. (#1740) 2023-08-13 19:53:12 +01:00
Ted Lawson b58ffb6aed
Setting for number format in archive tab. By @bigtedde (#1719) 2023-08-11 12:22:10 +01:00
jetchirag b015368fee
Integration Tests for Borg (#1716)
Move existing tests into subfolder `tests/unit`. Write integration tests that actually run the installed borg executable. Those tests can be found in `tests/integration`.  Those pytest fixtures that are the same for both kinds of tests remain in `tests/conftest.py`. The others can be found in `tests/integration/conftest.py` or `tests/unit/conftest.py`. This adds nox to the project and configures it to run the tests with different borg versions. This also updates the ci workflow to run the integration tests using nox.

* noxfile.py : Run pytest with a matrix of borg versions OR a specific borg version

* Makefile : Run using nox. Add phonies `test-unit` and `test-integration`.

* tests/conftest.py : Move some fixtures/functions to `tests/unit/conftest.py`.

* tests/test_*.py --> tests/unit/ : Move unittests and assets into subfolder

* tests/integration/ : Write integration tests.

* requirements.d/dev.txt: Add `nox` and `pkgconfig`. The latter is needed for installing new borg versions.

* .github/actions/setup/action.yml : Update to install pre-commit and nox when needed. The action now no longer installs Vorta.

* .github/actions/install-dependencies/action.yml : Install system deps of borg with this new composite action.

* .github/workflows/test.yml : Rename `test` ci to `test-unit` and update it for the new test setup.
                                              Implement `test-integration` ci.

Signed-off-by: Chirag Aggarwal <thechiragaggarwal@gmail.com>
2023-08-05 13:49:45 +00:00
Sam 0e37e1cf90
Correct homebrew path on arm macOS. By @sammcj (#1760) 2023-07-30 21:22:28 +01:00
jetchirag 25b4cc0b8b
Introduced password input widget (#1662)
Move existing code for password input widgets into common classes to increase maintainability and reusability alongside reducing redundancy. This implements a `PasswordLineEdit` that can show a red border when an invalid password is entered. It also features a button for showing/hiding the password entered. When combining two of these entries for setting a new password `PasswordInput` can be used from now on. It combines a form for entering and confirming a password with a label to show a message when there is an issue with the password. It also checks the entered password against some rules regarding its length. This PR replaces existing widgets for entering passwords with these two new widgets.

* src/vorta/views/partials/password_input.py : Implement common input widgets/classes

* src/vorta/views/repo_add_dialog.py : Use new widgets.
* src/vorta/assets/UI/repoadd.ui : ^^^
2023-07-28 07:39:10 +00:00
Divyansh Singh 157ac373a9
Run actions on multiple archives. By @diivi (#1723) 2023-07-05 11:28:09 +01:00
yfprojects ec1dfcd803
Add profile name to error notification. (#1728)
In a similar fashion like #1637 the commit adds the profile name to the error notification.

* src/vorta/scheduler.py

Co-authored-by: herrwusel <herrwusel@noreply.github.com>
2023-06-28 19:25:08 +00:00
Punyam Singh d087654eb3
Update GSoC notice in README (#1739)
* README.md
2023-06-27 09:30:41 +00:00
Manu 50be34cabe
Use maintained stale action (#1737) 2023-06-25 21:53:29 +01:00
Divyansh Singh 92608f9eaa
Assign names to repos. By @diivi (#1665) 2023-06-24 20:57:46 +01:00
Divyansh Singh f76195e47d
Disable compact button for older borg versions. By @diivi (#1727) 2023-06-23 20:20:23 +01:00
Divyansh Singh c56c6700ca
Show trigger (user/scheduled) in Archive tab. By @diivi (#1732) 2023-06-23 14:21:54 +01:00
Manu 210a968f91
Replace CC-BY Vaadin icon (#1735) 2023-06-21 09:09:38 +01:00
Manu 70ad554e03
Replace Font Awesome icons with Fork Awesome and others (#1729) 2023-06-19 08:16:37 +01:00
ratchek 2cb9afd4d5
Add a dev mode that allows for local storing of config files and logs (#1682)
Allows vorta to be called with the command-line flag `--development` or `-D` that will make it use a directory in the project tree to store all the settings, logs, and cache. This default directory will be called `.dev_config` and placed in the projects root.
Also allows for a custom directory path allowing for multiple "configuration" folders at once.
This can be used to prevent the vorta instance that a developer is working on from accessing the configuration files that they have set up for their personal backups.

* .gitignore : Add `.dev_config`.

* src/vorta/utils.py (parse_args): Add `--development` flag. The default will be `DEFAULT_DIR_FLAG`.

* src/vorta/utils.py : Add `DEFAULT_DIR_FLAG`.

* src/vorta/config.py : Add methods for populating the config directories exposed by this module.

* src/vorta/__main__.py (main): Handle `--development` flag and update config directories if its specified.

* Access config constants through the `config` module instead of importing them directly with `from .config import`.

---------
Co-authored-by: yfprojects <62463991+real-yfprojects@users.noreply.github.com>
2023-05-30 10:43:20 +00:00
yfprojects 5a3a7cf58e
Run pre-commit in lint ci and polish ci setup. (#1712)
Fix phonies in Makefile and run pre-commit for lint target.
Instead of running black, flake8 and ruff the lint phony now runs pre-commit which has these tools configured as hooks.

* Makefile

Define common composite action for setting up pre-commit and python.

* .github/actions/setup/action.yml

* .github/workflows/test.yml

Update codecov/codecov-action used in test ci to v3.

* .github/workflows/test.yml
2023-05-28 15:41:58 +00:00