summaryrefslogtreecommitdiffstats
path: root/pyfirstaidkit/utils/backup.py
diff options
context:
space:
mode:
authorJoel Andres Granados <jgranado@redhat.com>2008-08-07 19:02:36 +0200
committerJoel Andres Granados <jgranado@redhat.com>2008-08-07 19:06:31 +0200
commit51a175634d24eec42ad5a7cbe23660b42a63470c (patch)
tree49d6c1c1d8d3ed7bc562cff8ab98eb1b86774eaa /pyfirstaidkit/utils/backup.py
parentd26d9504b6eced4cebe9c81f304858a45725a1ee (diff)
downloadfirstaidkit-51a175634d24eec42ad5a7cbe23660b42a63470c.tar.gz
firstaidkit-51a175634d24eec42ad5a7cbe23660b42a63470c.tar.xz
firstaidkit-51a175634d24eec42ad5a7cbe23660b42a63470c.zip
Create a new backup directory every time, unless the user tells us otherwise.
Use tempfile to create safe backup directories. User should define backup.fullpath if he wants to override the default behaviour. User can also choose the directory where the backup directory goes.
Diffstat (limited to 'pyfirstaidkit/utils/backup.py')
-rw-r--r--pyfirstaidkit/utils/backup.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/pyfirstaidkit/utils/backup.py b/pyfirstaidkit/utils/backup.py
index f7670c2..79e4b85 100644
--- a/pyfirstaidkit/utils/backup.py
+++ b/pyfirstaidkit/utils/backup.py
@@ -25,6 +25,7 @@ import hashlib
import weakref
import cPickle as pickle
import copy
+import tempfile
class BackupException(Exception):
pass
@@ -209,20 +210,28 @@ class FileBackupStore(BackupStoreInterface):
return False
- def __init__(self, path):
+ def __init__(self, rootpath = "/tmp", fullpath = ""):
if self.__class__._singleton:
raise BackupException("BackupStore with %s type can have only "
"one instance" % (self.__name__,))
assert self.__class__._singleton==None
- self._path = path
- self._backups = {}
- if os.path.isdir(self._path):
- raise BackupException("Backupdir %s already exists. Erase dir or "
- "change backup dir." % self._path)
+ if fullpath:
+ if os.path.isdir(fullpath):
+ raise BackupException("Backupdir %s already exists. Erase "
+ "dir or change backup dir." % self._path)
+ else:
+ self._path = fullpath
+ os.makedirs(fullpath)
+
else:
- os.makedirs(self._path)
+ if not os.path.isdir(rootpath):
+ os.makedirs(rootpath)
+ self._path = tempfile.mkdtemp(prefix = "firstaidkitbackup-", dir = rootpath)
+
+ self._backups = {}
+
self.__class__._singleton = weakref.proxy(self)
print("Backup system initialized")