[pitivi: 5/8] projectmanager: backup recovery file is removed out when project is cleanly closed.
- From: Edward Hervey <edwardrv src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi: 5/8] projectmanager: backup recovery file is removed out when project is cleanly closed.
- Date: Wed, 22 Sep 2010 09:44:07 +0000 (UTC)
commit 49f449563b4298a5b59f94a5a4283e5558d4810c
Author: Luis de Bethencourt <luis debethencourt com>
Date: Tue Sep 14 16:08:22 2010 +0200
projectmanager: backup recovery file is removed out when project is cleanly closed.
pitivi/projectmanager.py | 24 ++++++++++++++++++++----
tests/test_projectmanager.py | 23 +++++++++++++++++++++++
2 files changed, 43 insertions(+), 4 deletions(-)
---
diff --git a/pitivi/projectmanager.py b/pitivi/projectmanager.py
index a8fcf1c..2681175 100644
--- a/pitivi/projectmanager.py
+++ b/pitivi/projectmanager.py
@@ -157,6 +157,7 @@ class ProjectManager(Signallable, Loggable):
self.emit("project-closed", self.current)
self.current.disconnect_by_function(self._projectChangedCb)
+ self._cleanBackupCb(self.current)
self.current.release()
self.current = None
@@ -219,16 +220,31 @@ class ProjectManager(Signallable, Loggable):
self.backup_lock += 5
def _saveBackupCb(self, project, uri):
+ backup_uri = self._backupFilename(uri)
+
if self.backup_lock > 10:
self.backup_lock -= 5
return True
else:
+ self.saveProject(project, backup_uri, overwrite=True, backup=True)
+ self.backup_lock = 0
+ return False
+
+ def _cleanBackupCb(self, project):
+ uri = project.uri
+ if uri:
+ location = self._backupFilename(uri)
+ if location:
+ location = location.split('file://')[1]
+ if os.path.exists(location):
+ os.remove(location)
+
+ def _backupFilename(self, uri):
+ if uri:
name, ext = os.path.splitext(uri)
if ext == '.xptv':
- uri = name + "~" + ext
- self.saveProject(project, uri, overwrite=True, backup=True)
- self.backup_lock = 0
- return False
+ return name + "~" + ext
+ return None
def _getFormatterForUri(self, uri):
return get_formatter_for_uri(uri)
diff --git a/tests/test_projectmanager.py b/tests/test_projectmanager.py
index a01067e..0bb6d33 100644
--- a/tests/test_projectmanager.py
+++ b/tests/test_projectmanager.py
@@ -346,3 +346,26 @@ class TestProjectManager(TestCase):
pass
+ def testBackupProject(self):
+ uri = "file://" + os.path.abspath("testproject.xptv")
+
+ # Create and save the project
+ self.manager.newBlankProject()
+ self.manager.saveProject(self.manager.current, uri, True)
+
+ # Save the backup
+ self.manager._saveBackupCb(self.manager.current, uri)
+ backup_uri = self.manager._backupFilename(uri)
+ self.failUnless(uri_is_reachable(uri))
+ self.failUnless(uri_is_reachable(backup_uri))
+
+ # When closing it should clean the backup
+ self.manager.closeRunningProject()
+ self.failUnless(not uri_is_reachable(backup_uri))
+
+ # unlink any existing project files
+ try:
+ os.unlink(uri)
+ os.unlink(backup_uri)
+ except OSError:
+ pass
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]