Skip to content

Commit

Permalink
some enhancements to ExistingRepoWindow: to allow creation of a new r…
Browse files Browse the repository at this point in the history
…epo in case the addition of an existing one fails/its not initialized
  • Loading branch information
SAMAD101 committed Sep 9, 2023
1 parent b4f2e64 commit 55ede38
Showing 1 changed file with 38 additions and 4 deletions.
42 changes: 38 additions & 4 deletions src/vorta/views/repo_add_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
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 BackupProfileMixin, 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
Expand Down Expand Up @@ -223,7 +223,7 @@ def run(self):
self._set_status(params['message'])


class ExistingRepoWindow(RepoWindow):
class ExistingRepoWindow(RepoWindow, BackupProfileMixin):
def __init__(self):
super().__init__()
self.title.setText(self.tr('Connect to existing Repository'))
Expand All @@ -233,12 +233,46 @@ def __init__(self):
self.passwordInput = PasswordLineEdit()
self.repoDataFormLayout.addRow(self.passwordLabel, self.passwordInput)

def run_result(self, result):
self.saveButton.setEnabled(True)
if result['returncode'] == 0:
self.added_repo.emit(result)
self.accept()
else:
self._set_status(self.tr('Unable to add your repository.\nYou need to initialize a new repository.'))
self.initialize_new_repo_window()

def initialize_new_repo_window(self):
new_window = AddRepoWindow()
new_window.setParent(self, QtCore.Qt.WindowType.Sheet)
new_window.added_repo.connect(self.process_new_repo)

# Autofilling of fields from this previous window
new_window.repoURL.setText(self.values['repo_url'])
new_window.repoName.setText(self.values['repo_name'])
new_window.set_password(new_window.values['repo_url'])
new_window.passwordInput.passwordLineEdit.setText(self.passwordInput.get_password())
new_window.passwordInput.confirmLineEdit.setText(self.passwordInput.get_password())
new_window._set_status(self.tr("Autofilled from previous window"))
new_window.open()

def process_new_repo(self, result):
if result['returncode'] == 0:
new_repo = RepoModel.get(url=result['params']['repo_url'])
profile = self.profile()
profile.repo = new_repo.id
profile.save()

self.set_repos()
self.repoSelector.setCurrentIndex(self.repoSelector.count() - 1)
self.repo_added.emit()
self.init_repo_stats()

def set_password(self, URL):
'''Autofill password from keyring only if current entry is empty'''
password = VortaKeyring.get_keyring().get_password('vorta-repo', URL)
if password and self.passwordInput.get_password() == "":
self._set_status(self.tr("Autofilled password from password manager."))
self.passwordInput.setText(password)
self.passwordInput.set_error_label(self.tr("Autofilled password from password manager."))

def run(self):
if self.validate():
Expand Down

0 comments on commit 55ede38

Please sign in to comment.