diff --git a/dev/releases/3.2.yml b/dev/releases/3.2.yml index f6d53d1..46926d8 100644 --- a/dev/releases/3.2.yml +++ b/dev/releases/3.2.yml @@ -2,6 +2,7 @@ minor_release_name: "Nicole" 3.2.0: notes: - "[Architecture] Switched to linuxserver.io container base image" + - "[Architecture] Reworked image handling" - "[Feature] Added basic support for albums" - "[Feature] New start page" - "[Feature] Added UI for track-artist, track-album and album-artist association" @@ -10,3 +11,4 @@ minor_release_name: "Nicole" - "[Bugfix] Fixed search on manual scrobble page" - "[Bugfix] Disabled DB maintenance while not running main server" - "[Bugfix] Removed some nonsensical ephemereal database entry creations" + - "[Bugfix] Fixed API endpoint for track charts with no artist provided" diff --git a/maloja/database/__init__.py b/maloja/database/__init__.py index a0cdcc2..b2cd5c0 100644 --- a/maloja/database/__init__.py +++ b/maloja/database/__init__.py @@ -363,6 +363,9 @@ def get_albums_artist_appears_on(dbconn=None,**keys): return result +@waitfordb +def get_tracks_without_album(dbconn=None,resolve_ids=True): + return get_charts_tracks(album=None,timerange=alltime(),resolve_ids=resolve_ids,dbconn=dbconn) @waitfordb def get_charts_artists(dbconn=None,resolve_ids=True,**keys): diff --git a/maloja/database/dbcache.py b/maloja/database/dbcache.py index 254d248..666ba21 100644 --- a/maloja/database/dbcache.py +++ b/maloja/database/dbcache.py @@ -134,7 +134,7 @@ else: def serialize(obj): try: return serialize(obj.hashable()) - except Exception: + except AttributeError: try: return json.dumps(obj) except Exception: diff --git a/maloja/database/sqldb.py b/maloja/database/sqldb.py index 28256fa..a53dbf3 100644 --- a/maloja/database/sqldb.py +++ b/maloja/database/sqldb.py @@ -1108,7 +1108,7 @@ def count_scrobbles_by_track_of_artist(since,to,artist,resolve_ids=True,dbconn=N @connection_provider def count_scrobbles_by_track_of_album(since,to,album,resolve_ids=True,dbconn=None): - album_id = get_album_id(album,dbconn=dbconn) + album_id = get_album_id(album,dbconn=dbconn) if album else None jointable = sql.join( DB['scrobbles'], diff --git a/maloja/web/jinja/abstracts/admin.jinja b/maloja/web/jinja/abstracts/admin.jinja index ff14fd5..12a7b73 100644 --- a/maloja/web/jinja/abstracts/admin.jinja +++ b/maloja/web/jinja/abstracts/admin.jinja @@ -21,7 +21,8 @@ ['setup','Server Setup'], ['settings','Settings'], ['apikeys','API Keys'], - ['manual','Manual Scrobbling'] + ['manual','Manual Scrobbling'], + ['albumless','Tracks without Albums'] ] %} {# ['import','Scrobble Import'], diff --git a/maloja/web/jinja/admin_albumless.jinja b/maloja/web/jinja/admin_albumless.jinja new file mode 100644 index 0000000..a04ee6a --- /dev/null +++ b/maloja/web/jinja/admin_albumless.jinja @@ -0,0 +1,12 @@ +{% set page ='admin_albumless' %} +{% extends "abstracts/admin.jinja" %} +{% block title %}Maloja - Albumless Tracks{% endblock %} + +{% block maincontent %} +Here you can find tracks that currently have no album.

+ +{% with list = dbc.get_tracks_without_album() %} +{% include 'partials/list_tracks.jinja' %} +{% endwith %} + +{% endblock %} diff --git a/maloja/web/jinja/partials/list_tracks.jinja b/maloja/web/jinja/partials/list_tracks.jinja new file mode 100644 index 0000000..bfef6de --- /dev/null +++ b/maloja/web/jinja/partials/list_tracks.jinja @@ -0,0 +1,21 @@ +{% import 'snippets/links.jinja' as links %} +{% import 'snippets/entityrow.jinja' as entityrow %} + + + +{% set firstindex = amountkeys.page * amountkeys.perpage %} +{% set lastindex = firstindex + amountkeys.perpage %} + + + + {% for e in list %} + {% if loop.index0 >= firstindex and loop.index0 < lastindex %} + + + + {{ entityrow.row(e['track']) }} + + + {% endif %} + {% endfor %} +