Improve backup feature (#1484)

This commit is contained in:
Veronica Berglyd Olsen
2023-07-27 00:18:51 +02:00
committed by GitHub
3 changed files with 11 additions and 12 deletions
+1 -2
View File
@@ -209,8 +209,7 @@ def checkIntTuple(value: int, valid: tuple | list | set, default: int) -> int:
# =============================================================================================== #
def formatInt(value: int) -> str:
"""Formats an integer with k, M, G etc.
"""
"""Formats an integer with k, M, G etc."""
if not isinstance(value, int):
return "ERR"
+6 -6
View File
@@ -46,7 +46,7 @@ from novelwriter.core.sessions import NWSessionLog
from novelwriter.core.projectxml import ProjectXMLReader, ProjectXMLWriter, XMLReadState
from novelwriter.core.projectdata import NWProjectData
from novelwriter.common import (
checkStringNone, formatTimeStamp, hexToInt, makeFileNameSafe, minmax
checkStringNone, formatInt, formatTimeStamp, hexToInt, makeFileNameSafe, minmax
)
if TYPE_CHECKING: # pragma: no cover
@@ -446,14 +446,14 @@ class NWProject(QObject):
), nwAlert.ERROR, exception=exc)
return False
archName = baseDir / self.tr(
"Backup from {0}"
).format(formatTimeStamp(time(), fileSafe=True) + ".zip")
timeStamp = formatTimeStamp(time(), fileSafe=True)
archName = baseDir / f"{cleanName} {timeStamp}.zip"
if self._storage.zipIt(archName, compression=2):
size = archName.stat().st_size
if doNotify:
self.mainGui.makeAlert(self.tr(
"Backup archive file written to: {0}"
).format(str(archName), nwAlert.INFO))
"Backup archive file written to: {0} [{1}B]"
).format(str(archName), formatInt(size)), nwAlert.INFO)
else:
self.mainGui.makeAlert(self.tr(
"Could not write backup archive."
+4 -4
View File
@@ -620,12 +620,12 @@ def testCoreProject_Backup(monkeypatch, mockGUI, fncPath, tstPaths):
theFiles = list((tstPaths.tmpDir / "Test Minimal").iterdir())
assert len(theFiles) in (1, 2) # Sometimes 2 due to clock tick
theZip = theFiles[-1].name
assert theZip[:12] == "Backup from "
assert theZip[-4:] == ".zip"
theZip = theFiles[-1]
assert theZip.name.startswith("Test Minimal")
assert theZip.suffix == ".zip"
# Extract the archive
with ZipFile(tstPaths.tmpDir / "Test Minimal" / theZip, mode="r") as inZip:
with ZipFile(tstPaths.tmpDir / "Test Minimal" / theZip.name, mode="r") as inZip:
inZip.extractall(tstPaths.tmpDir / "extract")
# Check that the main project file was restored