diff --git a/src/vorta/views/repo_add_dialog.py b/src/vorta/views/repo_add_dialog.py index 89e0f018..4ef6e832 100644 --- a/src/vorta/views/repo_add_dialog.py +++ b/src/vorta/views/repo_add_dialog.py @@ -5,6 +5,7 @@ from vorta.utils import get_private_keys, get_asset, choose_file_dialog, borg_co from vorta.borg.init import BorgInitThread from vorta.borg.info import BorgInfoThread from vorta.views.utils import get_colored_icon +from vorta.models import RepoModel uifile = get_asset('UI/repoadd.ui') AddRepoUI, AddRepoBase = uic.loadUiType(uifile) @@ -117,6 +118,10 @@ class AddRepoWindow(AddRepoBase, AddRepoUI): self._set_status(self.tr('Please enter a valid repo URL or select a local path.')) return False + if RepoModel.get_or_none(RepoModel.url == self.values['repo_url']) is not None: + self._set_status(self.tr('This repo has already been added.')) + return False + if self.__class__ == AddRepoWindow: if self.values['encryption'] != 'none': if len(self.values['password']) < 8: diff --git a/src/vorta/views/repo_tab.py b/src/vorta/views/repo_tab.py index 6ab86357..acdc93be 100644 --- a/src/vorta/views/repo_tab.py +++ b/src/vorta/views/repo_tab.py @@ -25,9 +25,7 @@ class RepoTab(RepoBase, RepoUI, BackupProfileMixin): self.repoSelector.addItem(self.tr('+ Initialize New Repository'), 'new') self.repoSelector.addItem(self.tr('+ Add Existing Repository'), 'existing') self.repoSelector.insertSeparator(3) - for repo in RepoModel.select(): - self.repoSelector.addItem(repo.url, repo.id) - + self.set_repos() self.repoSelector.currentIndexChanged.connect(self.repo_select_action) self.repoRemoveToolbutton.clicked.connect(self.repo_unlink_action) @@ -64,6 +62,13 @@ class RepoTab(RepoBase, RepoUI, BackupProfileMixin): self.repoRemoveToolbutton.setIcon(get_colored_icon('unlink')) self.sshKeyToClipboardButton.setIcon(get_colored_icon('copy')) + def set_repos(self): + count = self.repoSelector.count() + for x in range(4, count): # Repositories are listed after 4th entry in repoSelector + self.repoSelector.removeItem(4) + for repo in RepoModel.select(): + self.repoSelector.addItem(repo.url, repo.id) + def populate_from_profile(self): profile = self.profile() if profile.repo: @@ -175,7 +180,7 @@ class RepoTab(RepoBase, RepoUI, BackupProfileMixin): profile.repo = new_repo.id profile.save() - self.repoSelector.addItem(new_repo.url, new_repo.id) + self.set_repos() self.repoSelector.setCurrentIndex(self.repoSelector.count() - 1) self.repo_added.emit() self.init_repo_stats()