From c28eaee7d0a5a8db89356d0e0c019d124c378be7 Mon Sep 17 00:00:00 2001
From: Peter Kessen
Date: Thu, 28 Jan 2016 21:50:37 +0100
Subject: [PATCH] implemented interactive selection in modify
---
beets/ui/commands.py | 5 +++--
test/test_ui.py | 16 ++++++++++++++++
2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/beets/ui/commands.py b/beets/ui/commands.py
index 176cf9218..afd998042 100644
--- a/beets/ui/commands.py
+++ b/beets/ui/commands.py
@@ -1349,8 +1349,9 @@ def modify_items(lib, mods, dels, query, write, move, album, confirm):
else:
extra = ''
- if not ui.input_yn('Really modify%s (Y/n)?' % extra):
- return
+ changed = ui.input_select_items(
+ 'Really modify%s (Y/n)?' % extra, changed,
+ lambda o: print_modify_item(o, mods, dels))
# Apply changes to database and files
with lib.transaction():
diff --git a/test/test_ui.py b/test/test_ui.py
index 4a10a7947..480e6ce03 100644
--- a/test/test_ui.py
+++ b/test/test_ui.py
@@ -231,6 +231,22 @@ class ModifyTest(unittest.TestCase, TestHelper):
item.load()
self.assertEqual(0, item.mtime)
+ def test_selective_modify(self):
+ title = "Tracktitle"
+ album = "album"
+ origArtist = "composer"
+ newArtist = "coverArtist"
+ for i in range(0, 10):
+ self.add_item_fixture(title="{0}{1}".format(title, i),
+ artist=origArtist,
+ album=album)
+ self.modify_inp('s\ny\ny\ny\nn\nn\ny\ny\ny\ny\nn',
+ title, "artist={0}".format(newArtist))
+ origItems = self.lib.items("artist:{0}".format(origArtist))
+ newItems = self.lib.items("artist:{0}".format(newArtist))
+ self.assertEqual(len(list(origItems)), 3)
+ self.assertEqual(len(list(newItems)), 7)
+
# Album Tests
def test_modify_album(self):