[pitivi: 5/8] projectmanager: backup recovery file is removed out when project is cleanly closed.



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]