adding cleanup of stale track entries

This commit is contained in:
evilchili
2022-12-10 10:14:06 -08:00
parent 228d44ce98
commit 1a2506742f
9 changed files with 64 additions and 28 deletions
+14 -2
View File
@@ -14,6 +14,11 @@ class BasePrompt(Completer):
self._values = []
self._parent = parent
self._manager = manager
self._commands = {'help': self.help}
@property
def commands(self):
return self._commands
@property
def usage(self):
@@ -40,7 +45,7 @@ class BasePrompt(Completer):
@property
def values(self):
return self._values
return [k for k in self.commands.keys() if not k.startswith('_')]
def get_completions(self, document, complete_event):
word = document.get_word_before_cursor()
@@ -59,7 +64,7 @@ class BasePrompt(Completer):
def start(self, cmd=''):
while True:
if not cmd:
cmd = prompt(f'{self.prompt} ', completer=self)
cmd = prompt(f'{self.prompt} ', completer=self, complete_while_typing=True)
if not cmd:
return
cmd, *parts = cmd.split()
@@ -67,6 +72,13 @@ class BasePrompt(Completer):
return
cmd = ''
def help(self, parts):
if not parts:
print(self.__doc__)
else:
print(getattr(self, parts[0]).__doc__)
return True
def default_completer(self, document, complete_event):
raise NotImplementedError()
+2 -2
View File
@@ -54,8 +54,8 @@ class CommandPrompt(BasePrompt):
session=self.manager.session,
create_ok=True
)
res = self.commands['_playlist'].start()
return True and res
self.commands['_playlist'].start()
return True
def start(): # pragma: no cover
+14 -20
View File
@@ -8,21 +8,14 @@ from groove import db
class _playlist(BasePrompt):
def __init__(self, parent, manager=None):
super().__init__(manager=manager, parent=parent)
self._parent = parent
self._prompt = ''
self._commands = None
"""
PLAYLIST
"""
@property
def prompt(self):
return f"{self.parent.playlist}\n{self.parent.playlist.slug}> "
@property
def values(self):
return self.commands.keys()
@property
def commands(self):
if not self._commands:
@@ -31,9 +24,20 @@ class _playlist(BasePrompt):
'delete': self.delete,
'add': self.add,
'edit': self.edit,
'help': self.help
}
return self._commands
def _add_track(self, text):
sess = self.parent.manager.session
try:
track = sess.query(db.track).filter(db.track.c.relpath == text).one()
self.parent.playlist.create_entries([track])
except NoResultFound:
print("No match for '{text}'")
return
return text
def process(self, cmd, *parts):
res = True
if cmd in self.commands:
@@ -66,16 +70,6 @@ class _playlist(BasePrompt):
return True
self._add_track(text)
def _add_track(self, text):
sess = self.parent.manager.session
try:
track = sess.query(db.track).filter(db.track.c.relpath == text).one()
self.parent.playlist.create_entries([track])
except NoResultFound:
print("No match for '{text}'")
return
return text
def delete(self, parts):
res = prompt(
'Type DELETE to permanently delete the playlist '