[pitivi] Remove proxy target when removing an proxied asset



commit 0aabb19433bd08248c31d5fd3028a14bd32b77eb
Author: Thibault Saunier <tsaunier gnome org>
Date:   Sat Jun 11 09:58:46 2016 -0400

    Remove proxy target when removing an proxied asset
    
    + Add a unit test
    
    Fixes T7469
    
    Reviewed-by: Alex Băluț <alexandru balut gmail com>
    Differential Revision: https://phabricator.freedesktop.org/D1073

 pitivi/medialibrary.py      |    5 +++++
 tests/test_media_library.py |   26 ++++++++++++++++++++++++++
 2 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/pitivi/medialibrary.py b/pitivi/medialibrary.py
index 58512d9..0d95426 100644
--- a/pitivi/medialibrary.py
+++ b/pitivi/medialibrary.py
@@ -541,9 +541,14 @@ class MediaLibraryWidget(Gtk.Box, Loggable):
         with self.app.action_log.started("remove asset from media library"):
             for row in rows:
                 asset = model[row.get_path()][COL_ASSET]
+                target = asset.get_proxy_target()
                 self._project.remove_asset(asset)
                 self.app.gui.timeline_ui.purgeAsset(asset.props.id)
 
+                if target:
+                    self._project.remove_asset(target)
+                    self.app.gui.timeline_ui.purgeAsset(target.props.id)
+
         # The treeview can make some of the remaining items selected, so
         # make sure none are selected.
         self._unselectAll()
diff --git a/tests/test_media_library.py b/tests/test_media_library.py
index 1868c80..5134a2b 100644
--- a/tests/test_media_library.py
+++ b/tests/test_media_library.py
@@ -17,6 +17,7 @@
 # Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 # Boston, MA 02110-1301, USA.
 import os
+import tempfile
 from gettext import gettext as _
 from unittest import mock
 
@@ -150,6 +151,31 @@ class TestMediaLibrary(BaseTestMediaLibrary):
                             check_no_transcoding=True,
                             clean_proxies=False)
 
+    def testSaveProjectWithRemovedProxy(self):
+        sample_name = "30fps_numeroted_frames_red.mkv"
+        self.runCheckImport([sample_name])
+
+        project = self.app.project_manager.current_project
+        asset = GES.UriClipAsset.request_sync(common.get_sample_uri(sample_name))
+        target = asset.get_proxy_target()
+        self.assertEqual(set(project.list_assets(GES.Extractable)), set([target, asset]))
+
+        # Remove the asset
+        self.medialibrary.remove_assets_action.emit("activate", None)
+
+        # Make sure that the project has not assets anymore
+        self.assertEqual(project.list_assets(GES.Extractable), [])
+
+        # Save the project and reload it, making sure there is no asset
+        # in that new project
+        project_uri = Gst.filename_to_uri(tempfile.NamedTemporaryFile().name)
+        project.save(project.timeline, project_uri, None, True)
+
+        self._customSetUp(project_uri)
+        self.assertNotEqual(project, self.app.project_manager.current_project)
+        self.assertEqual(self.app.project_manager.current_project.list_assets(
+            GES.Extractable), [])
+
     def testNewlyImportedAssetSelected(self):
         self.runCheckImport(["30fps_numeroted_frames_red.mkv",
                             "30fps_numeroted_frames_blue.webm"])


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]