diff --git a/maloja/apis/native_v1.py b/maloja/apis/native_v1.py index f7e36a7..585fa11 100644 --- a/maloja/apis/native_v1.py +++ b/maloja/apis/native_v1.py @@ -714,6 +714,16 @@ def edit_track(id,title): "status":"success" } +@api.post("edit_album") +@authenticated_function(api=True) +@catch_exceptions +def edit_album(id,albumtitle): + """Internal Use Only""" + result = database.edit_album(id,{'albumtitle':albumtitle}) + return { + "status":"success" + } + @api.post("merge_tracks") @authenticated_function(api=True) diff --git a/maloja/database/__init__.py b/maloja/database/__init__.py index 7cb3c6b..978b569 100644 --- a/maloja/database/__init__.py +++ b/maloja/database/__init__.py @@ -189,6 +189,16 @@ def edit_track(id,trackinfo): return result +@waitfordb +def edit_album(id,albuminfo): + album = sqldb.get_album(id) + log(f"Renaming {album['albumtitle']} to {albuminfo['albumtitle']}") + result = sqldb.edit_album(id,albuminfo) + dbcache.invalidate_entity_cache() + dbcache.invalidate_caches() + + return result + @waitfordb def merge_artists(target_id,source_ids): sources = [sqldb.get_artist(id) for id in source_ids] diff --git a/maloja/database/sqldb.py b/maloja/database/sqldb.py index 1c0e0c5..b28e89a 100644 --- a/maloja/database/sqldb.py +++ b/maloja/database/sqldb.py @@ -558,6 +558,28 @@ def edit_track(id,trackupdatedict,dbconn=None): return True +@connection_provider +def edit_album(id,albumupdatedict,dbconn=None): + + album = get_album(id,dbconn=dbconn) + changedalbum = {**album,**albumupdatedict} + + dbentry = album_dict_to_db(albumupdatedict,dbconn=dbconn) + dbentry = {k:v for k,v in dbentry.items() if v} + + existing_album_id = get_album_id(changedalbum,create_new=False,dbconn=dbconn) + if existing_album_id not in (None,id): + raise exc.TrackExists(changedalbum) + + op = DB['albums'].update().where( + DB['albums'].c.id==id + ).values( + **dbentry + ) + result = dbconn.execute(op) + + return True + ### Merge diff --git a/maloja/web/jinja/partials/charts_albums_tiles.jinja b/maloja/web/jinja/partials/charts_albums_tiles.jinja index 56e3c4e..400d68b 100644 --- a/maloja/web/jinja/partials/charts_albums_tiles.jinja +++ b/maloja/web/jinja/partials/charts_albums_tiles.jinja @@ -28,7 +28,7 @@
- #{{ rank }} {{ album.title }} + #{{ rank }} {{ album.albumtitle }}
diff --git a/maloja/web/static/js/edit.js b/maloja/web/static/js/edit.js index d240d07..e25f9c9 100644 --- a/maloja/web/static/js/edit.js +++ b/maloja/web/static/js/edit.js @@ -161,6 +161,11 @@ function doneEditing() { searchParams.set("title", newname); var payload = {'id':entity_id,'title':newname} } + else if (entity_type == 'album') { + var endpoint = "/apis/mlj_1/edit_album"; + searchParams.set("albumtitle", newname); + var payload = {'id':entity_id,'albumtitle':newname} + } callback_func = function(req){ if (req.status == 200) {