Beispiel #1
0
 def init_repo_stats(self):
     repo = self.profile().repo
     if repo is not None:
         self.sizeCompressed.setText(pretty_bytes(repo.unique_csize))
         self.sizeDeduplicated.setText(pretty_bytes(repo.unique_size))
         self.sizeOriginal.setText(pretty_bytes(repo.total_size))
         self.repoEncryption.setText(str(repo.encryption))
     else:
         self.sizeCompressed.setText('')
         self.sizeDeduplicated.setText('')
         self.sizeOriginal.setText('')
         self.repoEncryption.setText('')
     self.repo_changed.emit()
Beispiel #2
0
 def data(self, column):
     if column == 1:
         return self.itemData[column]
     elif column == 2:
         return pretty_bytes(self.itemData[column])
     elif column == 0:
         return self.itemData[column]
Beispiel #3
0
    def populate_from_profile(self):
        """Populate archive list and prune settings from profile."""
        profile = self.profile()
        if profile.repo is not None:
            self.mount_points = get_mount_points(profile.repo.url)
            self.toolBox.setItemText(
                0,
                self.tr('Archives for %s') % profile.repo.url)
            archives = [
                s for s in profile.repo.archives.select().order_by(
                    ArchiveModel.time.desc())
            ]

            for row, archive in enumerate(archives):
                self.archiveTable.insertRow(row)

                formatted_time = archive.time.strftime('%Y-%m-%d %H:%M')
                self.archiveTable.setItem(row, 0,
                                          QTableWidgetItem(formatted_time))
                self.archiveTable.setItem(row, 1,
                                          SizeItem(pretty_bytes(archive.size)))
                if archive.duration is not None:
                    formatted_duration = str(
                        timedelta(seconds=round(archive.duration)))
                else:
                    formatted_duration = ''

                self.archiveTable.setItem(row, 2,
                                          QTableWidgetItem(formatted_duration))

                mount_point = self.mount_points.get(archive.name)
                if mount_point is not None:
                    item = QTableWidgetItem(mount_point)
                    self.archiveTable.setItem(row, 3, item)

                self.archiveTable.setItem(row, 4,
                                          QTableWidgetItem(archive.name))

            self.archiveTable.setRowCount(len(archives))
            item = self.archiveTable.item(0, 0)
            self.archiveTable.scrollToItem(item)
            self._toggle_all_buttons(enabled=True)
        else:
            self.mount_points = {}
            self.archiveTable.setRowCount(0)
            self.toolBox.setItemText(0, self.tr('Archives'))
            self._toggle_all_buttons(enabled=False)

        self.archiveNameTemplate.setText(profile.new_archive_name)
        self.prunePrefixTemplate.setText(profile.prune_prefix)

        # Populate pruning options from database
        profile = self.profile()
        for i in self.prune_intervals:
            getattr(self,
                    f'prune_{i}').setValue(getattr(profile, f'prune_{i}'))
            getattr(self,
                    f'prune_{i}').valueChanged.connect(self.save_prune_setting)
        self.prune_keep_within.setText(profile.prune_keep_within)
        self.prune_keep_within.editingFinished.connect(self.save_prune_setting)
Beispiel #4
0
 def data(self, column):
     if column == 1:
         return self.itemData[column]  # .strftime('%Y-%m-%dT%H:%M')
     elif column == 2:
         return pretty_bytes(self.itemData[column])
     elif column == 0:
         return self.itemData[column]
Beispiel #5
0
    def populate_from_profile(self):
        profile = self.profile()
        if profile.repo is not None:
            self.currentRepoLabel.setText(profile.repo.url)
            archives = [
                s for s in profile.repo.archives.select().order_by(
                    ArchiveModel.time.desc())
            ]

            for row, archive in enumerate(archives):
                self.archiveTable.insertRow(row)

                formatted_time = archive.time.strftime('%Y-%m-%d %H:%M')
                self.archiveTable.setItem(row, 0,
                                          QTableWidgetItem(formatted_time))
                self.archiveTable.setItem(
                    row, 1, QTableWidgetItem(pretty_bytes(archive.size)))
                if archive.duration is not None:
                    formatted_duration = str(
                        timedelta(seconds=round(archive.duration)))
                else:
                    formatted_duration = ''
                self.archiveTable.setItem(row, 2,
                                          QTableWidgetItem(formatted_duration))
                self.archiveTable.setItem(row, 3,
                                          QTableWidgetItem(archive.name))
            self.archiveTable.setRowCount(len(archives))
            self._toggle_all_buttons(enabled=True)
        else:
            self.archiveTable.setRowCount(0)
            self.currentRepoLabel.setText('N/A')
            self._toggle_all_buttons(enabled=False)
Beispiel #6
0
    def set_path_info(self, path, data_size, files_count):
        items = self.sourceFilesWidget.findItems(path, QtCore.Qt.MatchExactly)
        # Conversion int->str->int needed because QT limits int to 32-bit
        data_size = int(data_size)
        files_count = int(files_count)

        for item in items:
            db_item = SourceFileModel.get(dir=path, profile=self.profile())
            if QFileInfo(path).isDir():
                self.sourceFilesWidget.item(item.row(),
                                            SourceColumn.Type).setText(
                                                self.tr("Folder"))
                self.sourceFilesWidget.item(item.row(),
                                            SourceColumn.FilesCount).setText(
                                                format(files_count))
                db_item.path_isdir = True
            else:
                self.sourceFilesWidget.item(item.row(),
                                            SourceColumn.Type).setText(
                                                self.tr("File"))
                # No files count, if entry itself is a file
                self.sourceFilesWidget.item(
                    item.row(), SourceColumn.FilesCount).setText("")
                db_item.path_isdir = False
            self.sourceFilesWidget.item(item.row(), SourceColumn.Size).setText(
                pretty_bytes(data_size))

            db_item.dir_size = data_size
            db_item.dir_files_count = files_count
            db_item.save()
        # Remove thread from list when it's done
        for thrd in self.updateThreads:
            if thrd.objectName() == path:
                self.updateThreads.remove(thrd)
Beispiel #7
0
    def populate_from_profile(self):
        """Populate archive list and prune settings from profile."""

        profile = self.profile()
        if profile.repo is not None:
            self.toolBox.setItemText(0, f'Archives for {profile.repo.url}')
            archives = [
                s for s in profile.repo.archives.select().order_by(
                    ArchiveModel.time.desc())
            ]

            for row, archive in enumerate(archives):
                self.archiveTable.insertRow(row)

                formatted_time = archive.time.strftime('%Y-%m-%d %H:%M')
                self.archiveTable.setItem(row, 0,
                                          QTableWidgetItem(formatted_time))
                self.archiveTable.setItem(
                    row, 1, QTableWidgetItem(pretty_bytes(archive.size)))
                if archive.duration is not None:
                    formatted_duration = str(
                        timedelta(seconds=round(archive.duration)))
                else:
                    formatted_duration = ''
                self.archiveTable.setItem(row, 2,
                                          QTableWidgetItem(formatted_duration))
                self.archiveTable.setItem(row, 3,
                                          QTableWidgetItem(archive.name))
            self.archiveTable.setRowCount(len(archives))
            item = self.archiveTable.item(0, 0)
            self.archiveTable.scrollToItem(item)
            self._toggle_all_buttons(enabled=True)
        else:
            self.archiveTable.setRowCount(0)
            self.toolBox.setItemText(0, 'Archives')
            self._toggle_all_buttons(enabled=False)

        self.archiveNameTemplate.setText(profile.new_archive_name)
        self.prunePrefixTemplate.setText(profile.prune_prefix)
Beispiel #8
0
    def add_source_to_table(self, source, update_data=None):
        if update_data is None:
            update_data = SettingsModel.get(key="get_srcpath_datasize").value

        index_row = self.sourceFilesWidget.rowCount()
        self.sourceFilesWidget.insertRow(index_row)
        # Insert all items on current row, add tooltip containg the path name
        new_item = QTableWidgetItem(source.dir)
        new_item.setToolTip(source.dir)
        self.sourceFilesWidget.setItem(index_row, SourceColumn.Path, new_item)
        self.sourceFilesWidget.setItem(index_row, SourceColumn.Type,
                                       QTableWidgetItem(""))
        self.sourceFilesWidget.setItem(index_row, SourceColumn.Size,
                                       SizeItem(""))
        self.sourceFilesWidget.setItem(index_row, SourceColumn.FilesCount,
                                       FilesCount(""))

        if update_data:
            self.update_path_info(index_row)
        else:  # Use cached data from DB
            if source.dir_size > -1:
                self.sourceFilesWidget.item(index_row,
                                            SourceColumn.Size).setText(
                                                pretty_bytes(source.dir_size))

                if source.path_isdir:
                    self.sourceFilesWidget.item(index_row,
                                                SourceColumn.Type).setText(
                                                    self.tr("Folder"))
                    self.sourceFilesWidget.item(
                        index_row, SourceColumn.FilesCount).setText(
                            format(source.dir_files_count))
                else:
                    self.sourceFilesWidget.item(index_row,
                                                SourceColumn.Type).setText(
                                                    self.tr("File"))