Source code for AutoArchive._application.archiving.actions.create_action
# _create_action.py
#
# Project: AutoArchive
# License: GNU GPLv3
#
# Copyright (C) 2003 - 2023 Róbert Čerňanský
from AutoArchive._infrastructure.ui import VerbosityLevels
from .action_utils import ActionUtils
from ..._action.action_result import ActionResult
from ..._action.action import Action
[docs]
class CreateAction(Action):
def __init__(self, actionUtils: ActionUtils, selectedArchiveSpecs):
super().__init__(actionUtils.actionResult)
self.__actionUtils = actionUtils
self.__selectedArchiveSpecs = selectedArchiveSpecs
self.__commandExecutor = actionUtils.commandExecutor
self.__componentUi = actionUtils.componentUi
[docs]
def executeAction_(self) -> bool:
archiveSpecsForProcessing = self.__actionUtils.getArchiveSpecsForProcessing(self.__selectedArchiveSpecs)
if archiveSpecsForProcessing is None:
return False
try:
self.__commandExecutor.executeBeforeAllCommand()
except OSError as ex:
self.__componentUi.showError(ex.args[0])
return False
for specName, specFile in archiveSpecsForProcessing:
processingArchSpec = specName or specFile
self.__componentUi.setProcessingArchSpec(processingArchSpec)
if self.__componentUi.verbosity == VerbosityLevels.Verbose:
self.__componentUi.showVerbose(str.format("\nProcessing \"{}\"...", processingArchSpec))
# create the archive
self.__actionUtils.archiving.makeBackup(specFile)
try:
self.__commandExecutor.executeAfterAllCommand()
except OSError as ex:
self.__componentUi.showError(ex.args[0])
return False
self.__componentUi.setProcessingArchSpec(None)
return True
[docs]
def handleResult_(self, actionResult: ActionResult) -> None:
if self.__componentUi.verbosity == VerbosityLevels.Verbose:
self.__componentUi.showVerbose("")
if actionResult.result == ActionResult.ActionResults.Successful:
self.__componentUi.showVerbose("Backup creation completed successfully.")
elif actionResult.result == ActionResult.ActionResults.Issues:
self.__componentUi.showVerbose("Backup creation completed successfully. One or more warnings were " +
"shown. Check program's output for details.")
else:
self.__componentUi.showVerbose("Backup creation for one or more archives finished with error(s)! " +
"Check program's output for details.")