Compare commits

...

5 Commits

Author SHA1 Message Date
Shivansh Singh 3889087890
Merge 6af951f097 into 9cabbbd193 2024-04-12 16:02:07 +01:00
Manu 9cabbbd193 Input to change macOS version for building 2024-04-08 16:24:31 +01:00
Aryaman Sharma 3268bf1599
Notify after post_backup_tasks. By @TheLazron (#1940) 2024-04-07 18:05:04 +01:00
shivansh02 6af951f097 clear table if adding repo succeeds 2024-03-13 20:21:07 +05:30
shivansh02 02a2930069 reopen addrepowindow prefilled on failure 2024-03-13 19:28:20 +05:30
5 changed files with 70 additions and 4 deletions

View File

@ -3,17 +3,21 @@ on:
workflow_dispatch:
inputs:
branch:
description: 'Branch to use for building macOS release'
description: 'Branch to use for building release'
required: true
default: 'master'
borg_version:
description: 'Borg version to package'
required: true
default: '1.2.1'
default: '1.2.8'
macos_version:
description: 'macOS version for building'
required: true
default: 'macos-11'
jobs:
build:
runs-on: macos-11
runs-on: ${{ github.event.inputs.macos_version }}
steps:
- name: Check out selected branch

View File

@ -459,6 +459,7 @@ class VortaScheduler(QtCore.QObject):
Pruning and checking after successful backup.
"""
profile = BackupProfileModel.get(id=profile_id)
notifier = VortaNotifications.pick()
logger.info('Doing post-backup jobs for %s', profile.name)
if profile.prune_on:
msg = BorgPruneJob.prepare(profile)
@ -489,6 +490,11 @@ class VortaScheduler(QtCore.QObject):
self.app.jobs_manager.add_job(job)
logger.info('Finished background task for profile %s', profile.name)
notifier.deliver(
self.tr('Vorta Backup'),
self.tr('Post Backup Tasks successful for %s' % profile.name),
level='info',
)
def remove_job(self, profile_id):
if profile_id in self.timers:

View File

@ -15,6 +15,7 @@ from .models import (
BackupProfileModel,
EventLogModel,
ExclusionModel,
FailedRepoModel,
RepoModel,
RepoPassword,
SchemaVersion,
@ -56,6 +57,7 @@ def init_db(con=None):
EventLogModel,
SchemaVersion,
ExclusionModel,
FailedRepoModel,
]
)

View File

@ -268,3 +268,15 @@ class BackupProfileMixin:
def profile(self):
return BackupProfileModel.get(id=self.window().current_profile.id)
class FailedRepoModel(BaseModel):
"""A single failed repo with unique URL."""
url = pw.CharField(unique=True)
name = pw.CharField(default='')
extra_borg_arguments = pw.CharField(default='')
ssh_key = pw.CharField(default='')
class Meta:
database = DB

View File

@ -13,7 +13,7 @@ from PyQt6.QtWidgets import (
from vorta.borg.info_repo import BorgInfoRepoJob
from vorta.borg.init import BorgInitJob
from vorta.keyring.abc import VortaKeyring
from vorta.store.models import RepoModel
from vorta.store.models import FailedRepoModel, RepoModel
from vorta.utils import borg_compat, choose_file_dialog, get_asset, get_private_keys
from vorta.views.partials.password_input import PasswordInput, PasswordLineEdit
from vorta.views.utils import get_colored_icon
@ -37,6 +37,8 @@ class RepoWindow(AddRepoBase, AddRepoUI):
self.saveButton = self.buttonBox.button(QDialogButtonBox.StandardButton.Ok)
self.saveButton.setText(self.tr("Add"))
self.populate_from_failed_repo()
self.buttonBox.rejected.connect(self.close)
self.buttonBox.accepted.connect(self.run)
self.chooseLocalFolderButton.clicked.connect(self.choose_local_backup_folder)
@ -92,9 +94,49 @@ class RepoWindow(AddRepoBase, AddRepoUI):
if result['returncode'] == 0:
self.added_repo.emit(result)
self.accept()
# clear FailedRepoModel if adding repo succeeds
FailedRepoModel.delete().execute()
else:
self.save_failed_repo(
self.repoURL.text(),
self.repoName.text(),
self.extraBorgArgumentsLineEdit.text(),
self.sshComboBox.currentText(),
)
self._set_status(self.tr('Unable to add your repository.'))
def save_failed_repo(self, url, name, extraBorgArguments, sshKey):
# Check if there's already a failed repository entry in the database
failed_repo = FailedRepoModel.get_or_none()
if failed_repo is not None:
# Update details of the existing failed repository with the new information
failed_repo.url = url
failed_repo.name = name
failed_repo.extra_borg_arguments = extraBorgArguments
failed_repo.ssh_key = sshKey
failed_repo.save()
else:
# Create a new entry for the failed repository
failed_repo = FailedRepoModel.create(
url=url,
name=name,
extra_borg_arguments=extraBorgArguments,
ssh_key=sshKey,
)
return failed_repo
def populate_from_failed_repo(self):
failed_repo = FailedRepoModel.get_or_none()
if failed_repo is not None:
self.repoName.setText(failed_repo.name)
self.repoURL.setText(failed_repo.url)
self.extraBorgArgumentsLineEdit.setText(failed_repo.extra_borg_arguments)
ssh_index = self.sshComboBox.findData(failed_repo.ssh_key)
if ssh_index != -1:
self.sshComboBox.setCurrentIndex(ssh_index)
def init_ssh_key(self):
keys = get_private_keys()
for key in keys: