diff --git a/maloja/database/__init__.py b/maloja/database/__init__.py index 0219741..561bd5e 100644 --- a/maloja/database/__init__.py +++ b/maloja/database/__init__.py @@ -63,6 +63,8 @@ def waitfordb(func): def newfunc(*args,**kwargs): if not dbstatus['healthy']: raise exceptions.DatabaseNotBuilt() return func(*args,**kwargs) + + newfunc.__name__ = func.__name__ return newfunc @@ -421,8 +423,12 @@ def get_charts_tracks(dbconn=None,resolve_ids=True,**keys): @waitfordb def get_charts_albums(dbconn=None,resolve_ids=True,**keys): (since,to) = keys.get('timerange').timestamps() + appearing = keys.get('appearing',False) if 'artist' in keys: - result = sqldb.count_scrobbles_by_album_of_artist(since=since,to=to,artist=keys['artist'],associated=keys.get('associated',False),resolve_ids=resolve_ids,dbconn=dbconn) + if appearing: + result = sqldb.count_scrobbles_of_artist_by_album(since=since,to=to,artist=keys['artist'],associated=keys.get('associated',False),resolve_ids=resolve_ids,dbconn=dbconn) + else: + result = sqldb.count_scrobbles_by_album_of_artist(since=since,to=to,artist=keys['artist'],associated=keys.get('associated',False),resolve_ids=resolve_ids,dbconn=dbconn) else: result = sqldb.count_scrobbles_by_album(since=since,to=to,resolve_ids=resolve_ids,dbconn=dbconn) return result @@ -736,14 +742,17 @@ def album_info(dbconn=None,reduced=False,**keys): if not album_id: raise exceptions.AlbumDoesNotExist(album['albumtitle']) album = sqldb.get_album(album_id,dbconn=dbconn) - alltimecharts = get_charts_albums(timerange=alltime(),dbconn=dbconn) - #scrobbles = get_scrobbles_num(track=track,timerange=alltime()) - - c = [e for e in alltimecharts if e["album"] == album][0] - scrobbles = c["scrobbles"] - position = c["rank"] + extrainfo = {} + if reduced: + scrobbles = get_scrobbles_num(album=album,timerange=alltime()) + else: + alltimecharts = get_charts_albums(timerange=alltime(),dbconn=dbconn) + c = [e for e in alltimecharts if e["album"] == album][0] + scrobbles = c["scrobbles"] + position = c["rank"] + extrainfo['position'] = position cert = None threshold_gold, threshold_platinum, threshold_diamond = malojaconfig["SCROBBLES_GOLD_ALBUM","SCROBBLES_PLATINUM_ALBUM","SCROBBLES_DIAMOND_ALBUM"] @@ -752,7 +761,7 @@ def album_info(dbconn=None,reduced=False,**keys): elif scrobbles >= threshold_gold: cert = "gold" if reduced: - extrainfo = {} + pass else: twk = thisweek() tyr = thisyear() @@ -782,7 +791,6 @@ def album_info(dbconn=None,reduced=False,**keys): return { "album":album, "scrobbles":scrobbles, - "position":position, "certification":cert, "id":album_id, **extrainfo diff --git a/maloja/database/dbcache.py b/maloja/database/dbcache.py index 666ba21..0ccdddf 100644 --- a/maloja/database/dbcache.py +++ b/maloja/database/dbcache.py @@ -51,6 +51,8 @@ if malojaconfig['USE_GLOBAL_CACHE']: cache[key] = result return result + outer_func.__name__ = f"cache_wrap_{inner_func.__name__}" + return outer_func diff --git a/maloja/database/sqldb.py b/maloja/database/sqldb.py index 6ff019d..59f29fc 100644 --- a/maloja/database/sqldb.py +++ b/maloja/database/sqldb.py @@ -157,6 +157,7 @@ def connection_provider(func): return func(*args,**kwargs) wrapper.__innerfunc__ = func + wrapper.__name__ = f"connection_provider_{func.__name__}" return wrapper @connection_provider @@ -1184,7 +1185,7 @@ def count_scrobbles_of_artist_by_album(since,to,artist,associated=False,resolve_ if resolve_ids: albums = get_albums_map([row.album_id for row in result],dbconn=dbconn) - result = [{'scrobbles':row.count,'album':albums[row.album_id],'album_id':row.album_id} for row in result] + result = [{'scrobbles':row.count,'album':albums[row.album_id],'album_id':row.album_id} for row in result if row.album_id] else: result = [{'scrobbles':row.count,'album_id':row.album_id} for row in result] result = rank(result,key='scrobbles') diff --git a/maloja/web/jinja/partials/album_showcase.jinja b/maloja/web/jinja/partials/album_showcase.jinja index e4a3d5f..6fa167c 100644 --- a/maloja/web/jinja/partials/album_showcase.jinja +++ b/maloja/web/jinja/partials/album_showcase.jinja @@ -1,80 +1,56 @@ {% import 'snippets/links.jinja' as links %} -{% set info = dbc.get_albums_artist_appears_on(filterkeys,limitkeys) %} -{% set ownalbums = info.own_albums %} -{% set otheralbums = info.appears_on %}
-{% for album in ownalbums %} -{% set info = dbc.album_info({'album':album,'reduced':True}) %} + +{% for entry in dbc.get_charts_albums(filterkeys,limitkeys,{'appearing':False}) %} + +{%- set cert = None -%} +{%- if entry.scrobbles >= settings.scrobbles_gold_album -%}{% set cert = 'gold' %}{%- endif -%} +{%- if entry.scrobbles >= settings.scrobbles_platinum_album -%}{% set cert = 'platinum' %}{%- endif -%} +{%- if entry.scrobbles >= settings.scrobbles_diamond_album -%}{% set cert = 'diamond' %}{%- endif -%} +
 
- -
+
+
- {{ links.links(album.artists) }}
- {{ links.link(album) }} + {{ links.links(entry.album.artists) }}
+ {{ links.link(entry.album) }}
{% endfor %} -{% for album in otheralbums %} -{% set info = dbc.album_info({'album':album,'reduced':True}) %} +{% for entry in dbc.get_charts_albums(filterkeys,limitkeys,{'appearing':True}) %} + + +{% if artist not in (entry.album.artists or []) %} + +{%- set cert = None -%} +{%- if entry.scrobbles >= settings.scrobbles_gold_album -%}{% set cert = 'gold' %}{%- endif -%} +{%- if entry.scrobbles >= settings.scrobbles_platinum_album -%}{% set cert = 'platinum' %}{%- endif -%} +{%- if entry.scrobbles >= settings.scrobbles_diamond_album -%}{% set cert = 'diamond' %}{%- endif -%} +
Appears on
- -
+
+
- {{ links.links(album.artists) }}
- {{ links.link(album) }} + {{ links.links(entry.album.artists) }}
+ {{ links.link(entry.album) }}
+ +{% endif %} {% endfor %} -