Fixed renaming track to existing track

This commit is contained in:
krateng 2022-04-21 15:13:14 +02:00
parent fbbd959295
commit ff71a9c526
2 changed files with 15 additions and 3 deletions

View File

@ -621,6 +621,7 @@ def edit_artist(id,name):
@api.post("edit_track") @api.post("edit_track")
@authenticated_function(api=True) @authenticated_function(api=True)
@catch_exceptions
def edit_track(id,title): def edit_track(id,title):
"""Internal Use Only""" """Internal Use Only"""
result = database.edit_track(id,{'title':title}) result = database.edit_track(id,{'title':title})

View File

@ -7,6 +7,7 @@ from threading import Lock
from ..pkg_global.conf import data_dir from ..pkg_global.conf import data_dir
from .dbcache import cached_wrapper, cached_wrapper_individual from .dbcache import cached_wrapper, cached_wrapper_individual
from . import exceptions as exc
from doreah.logging import log from doreah.logging import log
from doreah.regular import runhourly, runmonthly from doreah.regular import runhourly, runmonthly
@ -283,7 +284,7 @@ def delete_scrobble(scrobble_id,dbconn=None):
@cached_wrapper @cached_wrapper
@connection_provider @connection_provider
def get_track_id(trackdict,dbconn=None): def get_track_id(trackdict,create_new=True,dbconn=None):
ntitle = normalize_name(trackdict['title']) ntitle = normalize_name(trackdict['title'])
artist_ids = [get_artist_id(a) for a in trackdict['artists']] artist_ids = [get_artist_id(a) for a in trackdict['artists']]
artist_ids = list(set(artist_ids)) artist_ids = list(set(artist_ids))
@ -313,6 +314,8 @@ def get_track_id(trackdict,dbconn=None):
#print("ID for",trackdict['title'],"was",row[0]) #print("ID for",trackdict['title'],"was",row[0])
return row.id return row.id
if not create_new: return None
op = DB['tracks'].insert().values( op = DB['tracks'].insert().values(
**track_dict_to_db(trackdict) **track_dict_to_db(trackdict)
@ -372,8 +375,16 @@ def edit_artist(id,artistupdatedict,dbconn=None):
return True return True
@connection_provider @connection_provider
def edit_track(id,trackdict,dbconn=None): def edit_track(id,trackupdatedict,dbconn=None):
dbentry = track_dict_to_db(trackdict)
track = get_track(id)
track.update(trackupdatedict)
dbentry = track_dict_to_db(trackupdatedict)
existing_track = get_track_id(track,create_new=False,dbconn=dbconn)
if existing_track:
raise exc.TrackExists(track)
op = DB['tracks'].update().where( op = DB['tracks'].update().where(
DB['tracks'].c.id==id DB['tracks'].c.id==id