mirror of
https://github.com/beetbox/beets.git
synced 2025-12-06 08:39:17 +01:00
Change parameter name, add return, add tests
Change the parameter name to omit_single_disc (vs previously zero_disc_if_single_disc) Add return of 'fields_set' so that, if triggered by the command line `beets zero`, it will still effect the item.write. Added tests.
This commit is contained in:
parent
5fc15bcfa4
commit
b1c87cd98c
4 changed files with 57 additions and 8 deletions
|
|
@ -41,7 +41,7 @@ class ZeroPlugin(BeetsPlugin):
|
|||
"fields": [],
|
||||
"keep_fields": [],
|
||||
"update_database": False,
|
||||
"zero_disc_if_single_disc": False,
|
||||
"omit_single_disc": False,
|
||||
}
|
||||
)
|
||||
|
||||
|
|
@ -124,14 +124,15 @@ class ZeroPlugin(BeetsPlugin):
|
|||
"""
|
||||
fields_set = False
|
||||
|
||||
if "disc" in tags and self.config["zero_disc_if_single_disc"].get(bool):
|
||||
if "disc" in tags and self.config["omit_single_disc"].get(bool):
|
||||
if item.disctotal == 1:
|
||||
fields_set = True
|
||||
self._log.debug("disc: {.disc} -> None", item)
|
||||
tags["disc"] = None
|
||||
|
||||
if not self.fields_to_progs:
|
||||
self._log.warning("no fields list to remove")
|
||||
return False
|
||||
return fields_set
|
||||
|
||||
for field, progs in self.fields_to_progs.items():
|
||||
if field in tags:
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ Unreleased
|
|||
|
||||
New features:
|
||||
|
||||
- :doc:`plugins/zero`: Add new configuration option,
|
||||
``zero_disc_if_single_disc``, to allow zeroing the disc number on write for
|
||||
single-disc albums. Defaults to False.
|
||||
- :doc:`plugins/zero`: Add new configuration option, ``omit_single_disc``, to
|
||||
allow zeroing the disc number on write for single-disc albums. Defaults to
|
||||
False.
|
||||
|
||||
Bug fixes:
|
||||
|
||||
|
|
|
|||
|
|
@ -31,8 +31,8 @@ to nullify and the conditions for nullifying them:
|
|||
``keep_fields``---not both!
|
||||
- To conditionally filter a field, use ``field: [regexp, regexp]`` to specify
|
||||
regular expressions.
|
||||
- Set ``zero_disc_if_single_disc`` to ``True`` to zero the disc number field
|
||||
only if the album contains a disctotal count and is a single disc.
|
||||
- Set ``omit_single_disc`` to ``True`` to zero the disc number field only if the
|
||||
album contains a disctotal count and is a single disc.
|
||||
- By default this plugin only affects files' tags; the beets database is left
|
||||
unchanged. To update the tags in the database, set the ``update_database``
|
||||
option to true.
|
||||
|
|
|
|||
|
|
@ -249,6 +249,54 @@ class ZeroPluginTest(PluginTestCase):
|
|||
|
||||
assert "id" not in z.fields_to_progs
|
||||
|
||||
def test_omit_single_disc_with_tags_single(self):
|
||||
item = self.add_item_fixture(
|
||||
disctotal=1, disc=1, comments="test comment"
|
||||
)
|
||||
item.write()
|
||||
with self.configure_plugin(
|
||||
{"omit_single_disc": True, "fields": ["comments"]}
|
||||
):
|
||||
item.write()
|
||||
|
||||
mf = MediaFile(syspath(item.path))
|
||||
assert mf.comments is None
|
||||
assert mf.disc == 0
|
||||
|
||||
def test_omit_single_disc_with_tags_multi(self):
|
||||
item = self.add_item_fixture(
|
||||
disctotal=4, disc=1, comments="test comment"
|
||||
)
|
||||
item.write()
|
||||
with self.configure_plugin(
|
||||
{"omit_single_disc": True, "fields": ["comments"]}
|
||||
):
|
||||
item.write()
|
||||
|
||||
mf = MediaFile(syspath(item.path))
|
||||
assert mf.comments is None
|
||||
assert mf.disc == 1
|
||||
|
||||
def test_omit_single_disc_only_change_single(self):
|
||||
item = self.add_item_fixture(disctotal=1, disc=1)
|
||||
item.write()
|
||||
|
||||
with self.configure_plugin({"omit_single_disc": True}):
|
||||
item.write()
|
||||
|
||||
mf = MediaFile(syspath(item.path))
|
||||
assert mf.disc == 0
|
||||
|
||||
def test_omit_single_disc_only_change_multi(self):
|
||||
item = self.add_item_fixture(disctotal=4, disc=1)
|
||||
item.write()
|
||||
|
||||
with self.configure_plugin({"omit_single_disc": True}):
|
||||
item.write()
|
||||
|
||||
mf = MediaFile(syspath(item.path))
|
||||
assert mf.disc == 1
|
||||
|
||||
def test_empty_query_n_response_no_changes(self):
|
||||
item = self.add_item_fixture(
|
||||
year=2016, day=13, month=3, comments="test comment"
|
||||
|
|
|
|||
Loading…
Reference in a new issue