diff --git a/maloja/apis/native_v1.py b/maloja/apis/native_v1.py index 6c4542a..fe8d245 100644 --- a/maloja/apis/native_v1.py +++ b/maloja/apis/native_v1.py @@ -520,8 +520,12 @@ def delete_scrobble(timestamp): @api.post("edit_artist") @authenticated_function(api=True) -def edit_artist(oldname,newname): - # we probably wanna pass the id to the web interface at some point - # but for now we just use the old name as identifer as it's always unique +def edit_artist(id,name): """Internal Use Only""" - return database.change_artist_name(oldname,newname) + return database.edit_artist(id,name) + +@api.post("edit_track") +@authenticated_function(api=True) +def edit_track(id,title): + """Internal Use Only""" + return database.edit_track(id,{'title':title}) diff --git a/maloja/database/__init__.py b/maloja/database/__init__.py index 67462a9..adf5be3 100644 --- a/maloja/database/__init__.py +++ b/maloja/database/__init__.py @@ -138,13 +138,20 @@ def remove_scrobble(timestamp): dbcache.invalidate_caches(timestamp) @waitfordb -def change_artist_name(oldname,newname): - log(f"Renaming {oldname} to {newname}") - id = sqldb.get_artist_id(oldname) - sqldb.edit_artist(id,newname) +def edit_artist(id,artistinfo): + artist = sqldb.get_artist(id) + log(f"Renaming {artist} to {artistinfo}") + sqldb.edit_artist(id,artistinfo) dbcache.invalidate_entity_cache() dbcache.invalidate_caches() +@waitfordb +def edit_track(id,trackinfo): + track = sqldb.get_track(id) + log(f"Renaming {track['title']} to {trackinfo['title']}") + sqldb.edit_track(id,trackinfo) + dbcache.invalidate_entity_cache() + dbcache.invalidate_caches() @@ -280,7 +287,8 @@ def artist_info(dbconn=None,**keys): artist = keys.get('artist') - artist = sqldb.get_artist(sqldb.get_artist_id(artist,dbconn=dbconn),dbconn=dbconn) + artist_id = sqldb.get_artist_id(artist,dbconn=dbconn) + artist = sqldb.get_artist(artist_id,dbconn=dbconn) alltimecharts = get_charts_artists(timerange=alltime(),dbconn=dbconn) scrobbles = get_scrobbles_num(artist=artist,timerange=alltime(),dbconn=dbconn) #we cant take the scrobble number from the charts because that includes all countas scrobbles @@ -298,7 +306,8 @@ def artist_info(dbconn=None,**keys): "silver": [year for year in cached.medals_artists if artist in cached.medals_artists[year]['silver']], "bronze": [year for year in cached.medals_artists if artist in cached.medals_artists[year]['bronze']], }, - "topweeks":len([e for e in cached.weekly_topartists if e == artist]) + "topweeks":len([e for e in cached.weekly_topartists if e == artist]), + "id":artist_id } except: # if the artist isnt in the charts, they are not being credited and we @@ -316,7 +325,8 @@ def track_info(dbconn=None,**keys): track = keys.get('track') - track = sqldb.get_track(sqldb.get_track_id(track,dbconn=dbconn),dbconn=dbconn) + track_id = sqldb.get_track_id(track,dbconn=dbconn) + track = sqldb.get_track(track_id,dbconn=dbconn) alltimecharts = get_charts_tracks(timerange=alltime(),dbconn=dbconn) #scrobbles = get_scrobbles_num(track=track,timerange=alltime()) @@ -340,7 +350,8 @@ def track_info(dbconn=None,**keys): "bronze": [year for year in cached.medals_tracks if track in cached.medals_tracks[year]['bronze']], }, "certification":cert, - "topweeks":len([e for e in cached.weekly_toptracks if e == track]) + "topweeks":len([e for e in cached.weekly_toptracks if e == track]), + "id":track_id } diff --git a/maloja/database/sqldb.py b/maloja/database/sqldb.py index 3b33afb..b560d8f 100644 --- a/maloja/database/sqldb.py +++ b/maloja/database/sqldb.py @@ -366,6 +366,16 @@ def edit_artist(id,artistdict,dbconn=None): ) result = dbconn.execute(op) +@connection_provider +def edit_track(id,trackdict,dbconn=None): + dbentry = track_dict_to_db(trackdict) + + op = DB['tracks'].update().where( + DB['tracks'].c.id==id + ).values( + **dbentry + ) + result = dbconn.execute(op) diff --git a/maloja/web/jinja/artist.jinja b/maloja/web/jinja/artist.jinja index a023f84..07bd7ef 100644 --- a/maloja/web/jinja/artist.jinja +++ b/maloja/web/jinja/artist.jinja @@ -30,7 +30,8 @@ {% block content %} diff --git a/maloja/web/jinja/track.jinja b/maloja/web/jinja/track.jinja index c3e3ce6..49ef8b8 100644 --- a/maloja/web/jinja/track.jinja +++ b/maloja/web/jinja/track.jinja @@ -23,6 +23,11 @@ {% block content %} + + {% import 'partials/awards_track.jinja' as awards %} @@ -43,6 +48,7 @@