mirror of
https://github.com/beetbox/beets.git
synced 2025-12-06 08:39:17 +01:00
Use simpler approach of asserting that at most one handler of import_task_before_choice returns an action.
This commit is contained in:
parent
39b5a7636c
commit
79616b42ed
4 changed files with 13 additions and 28 deletions
|
|
@ -501,22 +501,6 @@ def send(event, **arguments):
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
def send_seq(event, **arguments):
|
|
||||||
"""Like `send` but passes the result of the previous event handler to the
|
|
||||||
next, and returns only the result of the last non-None event handler.
|
|
||||||
|
|
||||||
`event` is the name of the event to send, all other named arguments
|
|
||||||
are passed along to the handlers.
|
|
||||||
"""
|
|
||||||
log.debug(u'Sequentially sending event: {0}', event)
|
|
||||||
previous = None
|
|
||||||
for handler in event_handlers()[event]:
|
|
||||||
result = handler(previous=previous, **arguments)
|
|
||||||
previous = result or previous
|
|
||||||
|
|
||||||
return previous
|
|
||||||
|
|
||||||
|
|
||||||
def feat_tokens(for_artist=True):
|
def feat_tokens(for_artist=True):
|
||||||
"""Return a regular expression that matches phrases like "featuring"
|
"""Return a regular expression that matches phrases like "featuring"
|
||||||
that separate a main artist or a song title from secondary artists.
|
that separate a main artist or a song title from secondary artists.
|
||||||
|
|
|
||||||
|
|
@ -700,10 +700,16 @@ class TerminalImportSession(importer.ImportSession):
|
||||||
|
|
||||||
# Let plugins display info or prompt the user before we go through the
|
# Let plugins display info or prompt the user before we go through the
|
||||||
# process of selecting candidate.
|
# process of selecting candidate.
|
||||||
action = plugins.send_seq('import_task_before_choice',
|
results = plugins.send('import_task_before_choice',
|
||||||
session=self, task=task)
|
session=self, task=task)
|
||||||
if action is not None:
|
actions = [action for action in results if action]
|
||||||
return action
|
|
||||||
|
if len(actions) == 1:
|
||||||
|
return actions[0]
|
||||||
|
elif len(actions) > 1:
|
||||||
|
raise Exception(
|
||||||
|
u'Only one handler for `import_task_before_choice` may return '
|
||||||
|
u'an action.')
|
||||||
|
|
||||||
# Take immediate action if appropriate.
|
# Take immediate action if appropriate.
|
||||||
action = _summary_judgment(task.rec)
|
action = _summary_judgment(task.rec)
|
||||||
|
|
|
||||||
|
|
@ -173,11 +173,7 @@ class BadFiles(BeetsPlugin):
|
||||||
if checks_failed:
|
if checks_failed:
|
||||||
task._badfiles_checks_failed = checks_failed
|
task._badfiles_checks_failed = checks_failed
|
||||||
|
|
||||||
def on_import_task_before_choice(self, task, session, previous):
|
def on_import_task_before_choice(self, task, session):
|
||||||
# Already skipping, so no need to notify the user of anything
|
|
||||||
if previous == importer.action.SKIP:
|
|
||||||
return None
|
|
||||||
|
|
||||||
if hasattr(task, '_badfiles_checks_failed'):
|
if hasattr(task, '_badfiles_checks_failed'):
|
||||||
ui.print_('{} one or more files failed checks:'
|
ui.print_('{} one or more files failed checks:'
|
||||||
.format(ui.colorize('text_warning', 'BAD')))
|
.format(ui.colorize('text_warning', 'BAD')))
|
||||||
|
|
|
||||||
|
|
@ -204,9 +204,8 @@ The events currently available are:
|
||||||
before any decision is made about how/if to import or tag. Can be used to
|
before any decision is made about how/if to import or tag. Can be used to
|
||||||
present information about the task or initiate interaction with the user
|
present information about the task or initiate interaction with the user
|
||||||
before importing occurs. Return an importer action to take a specific action.
|
before importing occurs. Return an importer action to take a specific action.
|
||||||
Parameters: ``task``, ``session``, and ``previous`` (which is the action
|
Only one handler may return a non-None result.
|
||||||
specified by the previous event handler for the same task, allowing an early
|
Parameters: ``task`` and ``session``
|
||||||
exist if e.g. a previous plugin has already selected to skip the import)
|
|
||||||
|
|
||||||
* `import_task_choice`: called after a decision has been made about an import
|
* `import_task_choice`: called after a decision has been made about an import
|
||||||
task. This event can be used to initiate further interaction with the user.
|
task. This event can be used to initiate further interaction with the user.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue