diff --git a/maloja/database/__init__.py b/maloja/database/__init__.py
index 753b232..8153356 100644
--- a/maloja/database/__init__.py
+++ b/maloja/database/__init__.py
@@ -73,7 +73,7 @@ coa = CollectorAgent()
-def incoming_scrobble(artists,title,album=None,albumartists=None,duration=None,length=None,time=None,fix=True,client=None,**kwargs):
+def incoming_scrobble(artists,title,album=None,albumartists=None,duration=None,length=None,time=None,fix=True,client=None,dbconn=None,**kwargs):
# TODO: just collecting all extra kwargs now. at some point, rework the authenticated api with alt function
# to actually look at the converted args instead of the request object and remove the key
# so that this function right here doesnt get the key passed to it
@@ -106,7 +106,7 @@ def incoming_scrobble(artists,title,album=None,albumartists=None,duration=None,l
}
- sqldb.add_scrobble(scrobbledict)
+ sqldb.add_scrobble(scrobbledict,dbconn=dbconn)
proxy_scrobble_all(artists,title,time)
@@ -125,80 +125,80 @@ def incoming_scrobble(artists,title,album=None,albumartists=None,duration=None,l
@waitfordb
-def get_scrobbles(**keys):
+def get_scrobbles(dbconn=None,**keys):
(since,to) = keys.get('timerange').timestamps()
if 'artist' in keys:
- result = sqldb.get_scrobbles_of_artist(artist=keys['artist'],since=since,to=to)
+ result = sqldb.get_scrobbles_of_artist(artist=keys['artist'],since=since,to=to,dbconn=dbconn)
elif 'track' in keys:
- result = sqldb.get_scrobbles_of_track(track=keys['track'],since=since,to=to)
+ result = sqldb.get_scrobbles_of_track(track=keys['track'],since=since,to=to,dbconn=dbconn)
else:
- result = sqldb.get_scrobbles(since=since,to=to)
+ result = sqldb.get_scrobbles(since=since,to=to,dbconn=dbconn)
#return result[keys['page']*keys['perpage']:(keys['page']+1)*keys['perpage']]
return list(reversed(result))
@waitfordb
-def get_scrobbles_num(**keys):
- return len(get_scrobbles(**keys))
+def get_scrobbles_num(dbconn=None,**keys):
+ return len(get_scrobbles(dbconn=dbconn,**keys))
@waitfordb
-def get_tracks(artist=None):
+def get_tracks(dbconn=None,artist=None):
if artist is None:
- result = sqldb.get_tracks()
+ result = sqldb.get_tracks(dbconn=dbconn)
else:
- result = sqldb.get_tracks_of_artist(artist)
+ result = sqldb.get_tracks_of_artist(artist,dbconn=dbconn)
return result
@waitfordb
-def get_artists():
- return sqldb.get_artists()
+def get_artists(dbconn=None):
+ return sqldb.get_artists(dbconn=dbconn)
@waitfordb
-def get_charts_artists(**keys):
+def get_charts_artists(dbconn=None,**keys):
(since,to) = keys.get('timerange').timestamps()
- result = sqldb.count_scrobbles_by_artist(since=since,to=to)
+ result = sqldb.count_scrobbles_by_artist(since=since,to=to,dbconn=dbconn)
return result
@waitfordb
-def get_charts_tracks(**keys):
+def get_charts_tracks(dbconn=None,**keys):
(since,to) = keys.get('timerange').timestamps()
if 'artist' in keys:
- result = sqldb.count_scrobbles_by_track_of_artist(since=since,to=to,artist=keys['artist'])
+ result = sqldb.count_scrobbles_by_track_of_artist(since=since,to=to,artist=keys['artist'],dbconn=dbconn)
else:
- result = sqldb.count_scrobbles_by_track(since=since,to=to)
+ result = sqldb.count_scrobbles_by_track(since=since,to=to,dbconn=dbconn)
return result
@waitfordb
-def get_pulse(**keys):
+def get_pulse(dbconn=None,**keys):
rngs = ranges(**{k:keys[k] for k in keys if k in ["since","to","within","timerange","step","stepn","trail"]})
results = []
for rng in rngs:
- res = get_scrobbles_num(timerange=rng,**{k:keys[k] for k in keys if k != 'timerange'})
+ res = get_scrobbles_num(timerange=rng,**{k:keys[k] for k in keys if k != 'timerange'},dbconn=dbconn)
results.append({"range":rng,"scrobbles":res})
return results
@waitfordb
-def get_performance(**keys):
+def get_performance(dbconn=None,**keys):
rngs = ranges(**{k:keys[k] for k in keys if k in ["since","to","within","timerange","step","stepn","trail"]})
results = []
for rng in rngs:
if "track" in keys:
- track = sqldb.get_track(sqldb.get_track_id(keys['track']))
- charts = get_charts_tracks(timerange=rng)
+ track = sqldb.get_track(sqldb.get_track_id(keys['track'],dbconn=dbconn),dbconn=dbconn)
+ charts = get_charts_tracks(timerange=rng,dbconn=dbconn)
rank = None
for c in charts:
if c["track"] == track:
rank = c["rank"]
break
elif "artist" in keys:
- artist = sqldb.get_artist(sqldb.get_artist_id(keys['artist']))
+ artist = sqldb.get_artist(sqldb.get_artist_id(keys['artist'],dbconn=dbconn),dbconn=dbconn)
# ^this is the most useless line in programming history
# but I like consistency
- charts = get_charts_artists(timerange=rng)
+ charts = get_charts_artists(timerange=rng,dbconn=dbconn)
rank = None
for c in charts:
if c["artist"] == artist:
@@ -209,14 +209,14 @@ def get_performance(**keys):
return results
@waitfordb
-def get_top_artists(**keys):
+def get_top_artists(dbconn=None,**keys):
rngs = ranges(**{k:keys[k] for k in keys if k in ["since","to","within","timerange","step","stepn","trail"]})
results = []
for rng in rngs:
try:
- res = get_charts_artists(timerange=rng)[0]
+ res = get_charts_artists(timerange=rng,dbconn=dbconn)[0]
results.append({"range":rng,"artist":res["artist"],"scrobbles":res["scrobbles"]})
except:
results.append({"range":rng,"artist":None,"scrobbles":0})
@@ -225,14 +225,14 @@ def get_top_artists(**keys):
@waitfordb
-def get_top_tracks(**keys):
+def get_top_tracks(dbconn=None,**keys):
rngs = ranges(**{k:keys[k] for k in keys if k in ["since","to","within","timerange","step","stepn","trail"]})
results = []
for rng in rngs:
try:
- res = get_charts_tracks(timerange=rng)[0]
+ res = get_charts_tracks(timerange=rng,dbconn=dbconn)[0]
results.append({"range":rng,"track":res["track"],"scrobbles":res["scrobbles"]})
except:
results.append({"range":rng,"track":None,"scrobbles":0})
@@ -240,15 +240,15 @@ def get_top_tracks(**keys):
return results
@waitfordb
-def artist_info(artist):
+def artist_info(artist,dbconn=None):
- artist = sqldb.get_artist(sqldb.get_artist_id(artist))
- alltimecharts = get_charts_artists(timerange=alltime())
- scrobbles = get_scrobbles_num(artist=artist,timerange=alltime())
+ artist = sqldb.get_artist(sqldb.get_artist_id(artist,dbconn=dbconn),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
try:
c = [e for e in alltimecharts if e["artist"] == artist][0]
- others = sqldb.get_associated_artists(artist)
+ others = sqldb.get_associated_artists(artist,dbconn=dbconn)
position = c["rank"]
return {
"artist":artist,
@@ -274,10 +274,10 @@ def artist_info(artist):
@waitfordb
-def track_info(track):
+def track_info(track,dbconn=None):
- track = sqldb.get_track(sqldb.get_track_id(track))
- alltimecharts = get_charts_tracks(timerange=alltime())
+ track = sqldb.get_track(sqldb.get_track_id(track,dbconn=dbconn),dbconn=dbconn)
+ alltimecharts = get_charts_tracks(timerange=alltime(),dbconn=dbconn)
#scrobbles = get_scrobbles_num(track=track,timerange=alltime())
c = [e for e in alltimecharts if e["track"] == track][0]
diff --git a/maloja/database/dbcache.py b/maloja/database/dbcache.py
index 5e706e5..f3e233e 100644
--- a/maloja/database/dbcache.py
+++ b/maloja/database/dbcache.py
@@ -31,6 +31,10 @@ def cached_wrapper(inner_func):
if not USE_CACHE: return inner_func
def outer_func(*args,**kwargs):
+ if 'dbconn' in kwargs:
+ conn = kwargs.pop('dbconn')
+ else:
+ conn = None
global hits, misses
key = (serialize(args),serialize(kwargs), inner_func, kwargs.get("since"), kwargs.get("to"))
@@ -40,7 +44,7 @@ def cached_wrapper(inner_func):
else:
misses += 1
- result = inner_func(*args,**kwargs)
+ result = inner_func(*args,**kwargs,dbconn=conn)
cache[key] = result
return result
diff --git a/maloja/database/jinjaview.py b/maloja/database/jinjaview.py
index 7c90935..14ec600 100644
--- a/maloja/database/jinjaview.py
+++ b/maloja/database/jinjaview.py
@@ -1,12 +1,17 @@
from .. import database
+from . sqldb import engine
+
# this is a wrapper object that provides a DB connection so that one jinja page
# (with all its included partials) can use it for all functions
# it also translates the non-unpacked calls to unpacked calls that the DB wants
class JinjaDBConnection:
- def __init__(self):
- pass
+ def __enter__(self):
+ self.conn = engine.connect()
+ return self
+ def __exit__(self, exc_type, exc_value, exc_traceback):
+ self.conn.close()
def __getattr__(self,name):
originalmethod = getattr(database,name)
@@ -14,6 +19,6 @@ class JinjaDBConnection:
kwargs = {}
for k in keys:
kwargs.update(k)
- return originalmethod(**kwargs)
+ return originalmethod(**kwargs,dbconn=self.conn)
return packedmethod
diff --git a/maloja/database/sqldb.py b/maloja/database/sqldb.py
index c18fb08..2f9ecff 100644
--- a/maloja/database/sqldb.py
+++ b/maloja/database/sqldb.py
@@ -167,10 +167,10 @@ def artist_dict_to_db(info):
##### Actual Database interactions
-def add_scrobble(scrobbledict):
+def add_scrobble(scrobbledict,dbconn=None):
add_scrobbles([scrobbledict])
-def add_scrobbles(scrobbleslist):
+def add_scrobbles(scrobbleslist,dbconn=None):
ops = [
DB['scrobbles'].insert().values(
@@ -189,7 +189,7 @@ def add_scrobbles(scrobbleslist):
### these will 'get' the ID of an entity, creating it if necessary
@cached_wrapper
-def get_track_id(trackdict):
+def get_track_id(trackdict,dbconn=None):
ntitle = normalize_name(trackdict['title'])
artist_ids = [get_artist_id(a) for a in trackdict['artists']]
@@ -235,7 +235,7 @@ def get_track_id(trackdict):
return track_id
@cached_wrapper
-def get_artist_id(artistname):
+def get_artist_id(artistname,dbconn=None):
nname = normalize_name(artistname)
#print("looking for",nname)
@@ -266,7 +266,7 @@ def get_artist_id(artistname):
### Functions that get rows according to parameters
@cached_wrapper
-def get_scrobbles_of_artist(artist,since=None,to=None):
+def get_scrobbles_of_artist(artist,since=None,to=None,dbconn=None):
if since is None: since=0
if to is None: to=now()
@@ -287,7 +287,7 @@ def get_scrobbles_of_artist(artist,since=None,to=None):
return result
@cached_wrapper
-def get_scrobbles_of_track(track,since=None,to=None):
+def get_scrobbles_of_track(track,since=None,to=None,dbconn=None):
if since is None: since=0
if to is None: to=now()
@@ -307,7 +307,7 @@ def get_scrobbles_of_track(track,since=None,to=None):
return result
@cached_wrapper
-def get_scrobbles(since=None,to=None,resolve_references=True):
+def get_scrobbles(since=None,to=None,resolve_references=True,dbconn=None):
if since is None: since=0
if to is None: to=now()
@@ -324,7 +324,7 @@ def get_scrobbles(since=None,to=None,resolve_references=True):
return result
@cached_wrapper
-def get_artists_of_track(track_id,resolve_references=True):
+def get_artists_of_track(track_id,resolve_references=True,dbconn=None):
with engine.begin() as conn:
op = DB['trackartists'].select().where(
DB['trackartists'].c.track_id==track_id
@@ -336,7 +336,7 @@ def get_artists_of_track(track_id,resolve_references=True):
@cached_wrapper
-def get_tracks_of_artist(artist):
+def get_tracks_of_artist(artist,dbconn=None):
artist_id = get_artist_id(artist)
@@ -349,7 +349,7 @@ def get_tracks_of_artist(artist):
return tracks_db_to_dict(result)
@cached_wrapper
-def get_artists():
+def get_artists(dbconn=None):
with engine.begin() as conn:
op = DB['artists'].select()
result = conn.execute(op).all()
@@ -357,7 +357,7 @@ def get_artists():
return artists_db_to_dict(result)
@cached_wrapper
-def get_tracks():
+def get_tracks(dbconn=None):
with engine.begin() as conn:
op = DB['tracks'].select()
result = conn.execute(op).all()
@@ -367,7 +367,7 @@ def get_tracks():
### functions that count rows for parameters
@cached_wrapper
-def count_scrobbles_by_artist(since,to):
+def count_scrobbles_by_artist(since,to,dbconn=None):
jointable = sql.join(
DB['scrobbles'],
DB['trackartists'],
@@ -404,7 +404,7 @@ def count_scrobbles_by_artist(since,to):
return result
@cached_wrapper
-def count_scrobbles_by_track(since,to):
+def count_scrobbles_by_track(since,to,dbconn=None):
with engine.begin() as conn:
op = sql.select(
@@ -424,7 +424,7 @@ def count_scrobbles_by_track(since,to):
return result
@cached_wrapper
-def count_scrobbles_by_track_of_artist(since,to,artist):
+def count_scrobbles_by_track_of_artist(since,to,artist,dbconn=None):
artist_id = get_artist_id(artist)
@@ -458,7 +458,7 @@ def count_scrobbles_by_track_of_artist(since,to,artist):
### functions that get mappings for several entities -> rows
@cached_wrapper
-def get_artists_of_tracks(track_ids):
+def get_artists_of_tracks(track_ids,dbconn=None):
with engine.begin() as conn:
op = sql.join(DB['trackartists'],DB['artists']).select().where(
DB['trackartists'].c.track_id.in_(track_ids)
@@ -472,7 +472,7 @@ def get_artists_of_tracks(track_ids):
@cached_wrapper
-def get_tracks_map(track_ids):
+def get_tracks_map(track_ids,dbconn=None):
with engine.begin() as conn:
op = DB['tracks'].select().where(
DB['tracks'].c.id.in_(track_ids)
@@ -487,7 +487,7 @@ def get_tracks_map(track_ids):
return tracks
@cached_wrapper
-def get_artists_map(artist_ids):
+def get_artists_map(artist_ids,dbconn=None):
with engine.begin() as conn:
op = DB['artists'].select().where(
DB['artists'].c.id.in_(artist_ids)
@@ -505,7 +505,7 @@ def get_artists_map(artist_ids):
### associations
@cached_wrapper
-def get_associated_artists(*artists):
+def get_associated_artists(dbconn=None,*artists):
artist_ids = [get_artist_id(a) for a in artists]
jointable = sql.join(
@@ -524,7 +524,7 @@ def get_associated_artists(*artists):
return artists
@cached_wrapper
-def get_credited_artists(*artists):
+def get_credited_artists(dbconn=None,*artists):
artist_ids = [get_artist_id(a) for a in artists]
jointable = sql.join(
@@ -546,7 +546,7 @@ def get_credited_artists(*artists):
### get a specific entity by id
@cached_wrapper
-def get_track(id):
+def get_track(id,dbconn=None):
with engine.begin() as conn:
op = DB['tracks'].select().where(
DB['tracks'].c.id==id
@@ -557,7 +557,7 @@ def get_track(id):
return track_db_to_dict(trackinfo)
@cached_wrapper
-def get_artist(id):
+def get_artist(id,dbconn=None):
with engine.begin() as conn:
op = DB['artists'].select().where(
DB['artists'].c.id==id
diff --git a/maloja/web/jinja/admin_issues.jinja b/maloja/web/jinja/admin_issues.jinja
index 931bb4c..bda65bb 100644
--- a/maloja/web/jinja/admin_issues.jinja
+++ b/maloja/web/jinja/admin_issues.jinja
@@ -33,7 +33,7 @@
{% endblock %}
-{% set issuedata = dbp.issues() %}
+{% set issuedata = dbc.issues() %}
{% block maincontent %}
diff --git a/maloja/web/jinja/admin_setup.jinja b/maloja/web/jinja/admin_setup.jinja
index d79d9ad..e6313f1 100644
--- a/maloja/web/jinja/admin_setup.jinja
+++ b/maloja/web/jinja/admin_setup.jinja
@@ -47,7 +47,7 @@
{% endblock %}
-{% set rulesets = dbp.get_predefined_rulesets() %}
+{% set rulesets = dbc.get_predefined_rulesets() %}
{% block maincontent %}
diff --git a/maloja/web/jinja/charts_artists.jinja b/maloja/web/jinja/charts_artists.jinja
index 3b98975..5c34096 100644
--- a/maloja/web/jinja/charts_artists.jinja
+++ b/maloja/web/jinja/charts_artists.jinja
@@ -5,7 +5,7 @@
{% endblock %}
-{% set charts = dbp.get_charts_artists(filterkeys,limitkeys) %}
+{% set charts = dbc.get_charts_artists(filterkeys,limitkeys) %}
{% set pages = math.ceil(charts.__len__() / amountkeys.perpage) %}
{% if charts[0] is defined %}
{% set topartist = charts[0].artist %}
diff --git a/maloja/web/jinja/charts_tracks.jinja b/maloja/web/jinja/charts_tracks.jinja
index 0208c66..eb7a568 100644
--- a/maloja/web/jinja/charts_tracks.jinja
+++ b/maloja/web/jinja/charts_tracks.jinja
@@ -7,7 +7,7 @@
{% endblock %}
-{% set charts = dbp.get_charts_tracks(filterkeys,limitkeys) %}
+{% set charts = dbc.get_charts_tracks(filterkeys,limitkeys) %}
{% set pages = math.ceil(charts.__len__() / amountkeys.perpage) %}
{% if charts[0] is defined %}
{% set toptrack = charts[0].track %}
diff --git a/maloja/web/jinja/partials/charts_artists.jinja b/maloja/web/jinja/partials/charts_artists.jinja
index a692bb2..f3496fb 100644
--- a/maloja/web/jinja/partials/charts_artists.jinja
+++ b/maloja/web/jinja/partials/charts_artists.jinja
@@ -2,7 +2,7 @@
{% import 'snippets/entityrow.jinja' as entityrow %}
{% if charts is undefined %}
- {% set charts = dbp.get_charts_artists(limitkeys) %}
+ {% set charts = dbc.get_charts_artists(limitkeys) %}
{% endif %}
{% if compare %}
@@ -11,7 +11,7 @@
{% if compare is none %}{% set compare = False %}{% endif %}
{% endif %}
{% if compare %}
- {% set prevartists = dbp.get_charts_artists({'timerange':compare}) %}
+ {% set prevartists = dbc.get_charts_artists({'timerange':compare}) %}
{% set lastranks = {} %}
{% for a in prevartists %}
diff --git a/maloja/web/jinja/partials/charts_artists_tiles.jinja b/maloja/web/jinja/partials/charts_artists_tiles.jinja
index f026867..eb8e2af 100644
--- a/maloja/web/jinja/partials/charts_artists_tiles.jinja
+++ b/maloja/web/jinja/partials/charts_artists_tiles.jinja
@@ -2,7 +2,7 @@
{% if charts is undefined %}
- {% set charts = dbp.get_charts_artists(limitkeys) %}
+ {% set charts = dbc.get_charts_artists(limitkeys) %}
{% endif %}
{% set charts_14 = charts | fixlength(14) %}
diff --git a/maloja/web/jinja/partials/charts_tracks.jinja b/maloja/web/jinja/partials/charts_tracks.jinja
index 24734c8..f9f3d70 100644
--- a/maloja/web/jinja/partials/charts_tracks.jinja
+++ b/maloja/web/jinja/partials/charts_tracks.jinja
@@ -2,7 +2,7 @@
{% import 'snippets/entityrow.jinja' as entityrow %}
{% if charts is undefined %}
- {% set charts = dbp.get_charts_tracks(filterkeys,limitkeys) %}
+ {% set charts = dbc.get_charts_tracks(filterkeys,limitkeys) %}
{% endif %}
{% if compare %}
{% if compare is true %}
@@ -10,7 +10,7 @@
{% if compare is none %}{% set compare = False %}{% endif %}
{% endif %}
{% if compare %}
- {% set prevtracks = dbp.get_charts_tracks(filterkeys,{'timerange':compare}) %}
+ {% set prevtracks = dbc.get_charts_tracks(filterkeys,{'timerange':compare}) %}
{% set lastranks = {} %}
{% for t in prevtracks %}
diff --git a/maloja/web/jinja/partials/charts_tracks_tiles.jinja b/maloja/web/jinja/partials/charts_tracks_tiles.jinja
index 2f93b63..155c919 100644
--- a/maloja/web/jinja/partials/charts_tracks_tiles.jinja
+++ b/maloja/web/jinja/partials/charts_tracks_tiles.jinja
@@ -2,7 +2,7 @@
{% if charts is undefined %}
- {% set charts = dbp.get_charts_tracks(filterkeys,limitkeys) %}
+ {% set charts = dbc.get_charts_tracks(filterkeys,limitkeys) %}
{% endif %}
{% set charts_14 = charts | fixlength(14) %}
diff --git a/maloja/web/jinja/partials/performance.jinja b/maloja/web/jinja/partials/performance.jinja
index 6847a7d..6d1c20f 100644
--- a/maloja/web/jinja/partials/performance.jinja
+++ b/maloja/web/jinja/partials/performance.jinja
@@ -1,6 +1,6 @@
{% import 'snippets/links.jinja' as links %}
-{% set ranges = dbp.get_performance(filterkeys,limitkeys,delimitkeys) %}
+{% set ranges = dbc.get_performance(filterkeys,limitkeys,delimitkeys) %}
{% set minrank = ranges|map(attribute="rank")|reject("none")|max|default(60) %}
{% set minrank = minrank + 20 %}
diff --git a/maloja/web/jinja/partials/pulse.jinja b/maloja/web/jinja/partials/pulse.jinja
index fb1317d..68960e4 100644
--- a/maloja/web/jinja/partials/pulse.jinja
+++ b/maloja/web/jinja/partials/pulse.jinja
@@ -1,6 +1,6 @@
{% import 'snippets/links.jinja' as links %}
-{% set ranges = dbp.get_pulse(filterkeys,limitkeys,delimitkeys) %}
+{% set ranges = dbc.get_pulse(filterkeys,limitkeys,delimitkeys) %}
{% set maxbar = ranges|map(attribute="scrobbles")|max|default(1) %}
{% if maxbar < 1 %}{% set maxbar = 1 %}{% endif %}
diff --git a/maloja/web/jinja/partials/scrobbles.jinja b/maloja/web/jinja/partials/scrobbles.jinja
index 3c00b3c..2e1848e 100644
--- a/maloja/web/jinja/partials/scrobbles.jinja
+++ b/maloja/web/jinja/partials/scrobbles.jinja
@@ -1,4 +1,4 @@
-{% set scrobbles = dbp.get_scrobbles(filterkeys,limitkeys,amountkeys) %}
+{% set scrobbles = dbc.get_scrobbles(filterkeys,limitkeys,amountkeys) %}
{% set firstindex = amountkeys.page * amountkeys.perpage %}
{% set lastindex = firstindex + amountkeys.perpage %}
diff --git a/maloja/web/jinja/partials/top_artists.jinja b/maloja/web/jinja/partials/top_artists.jinja
index 2b750a1..60c1481 100644
--- a/maloja/web/jinja/partials/top_artists.jinja
+++ b/maloja/web/jinja/partials/top_artists.jinja
@@ -1,7 +1,7 @@
{% import 'snippets/links.jinja' as links %}
{% import 'snippets/entityrow.jinja' as entityrow %}
-{% set ranges = dbp.get_top_artists(limitkeys,delimitkeys) %}
+{% set ranges = dbc.get_top_artists(limitkeys,delimitkeys) %}
{% set maxbar = ranges|map(attribute="scrobbles")|max|default(1) %}
{% if maxbar < 1 %}{% set maxbar = 1 %}{% endif %}
diff --git a/maloja/web/jinja/partials/top_tracks.jinja b/maloja/web/jinja/partials/top_tracks.jinja
index 5af27eb..2c766f2 100644
--- a/maloja/web/jinja/partials/top_tracks.jinja
+++ b/maloja/web/jinja/partials/top_tracks.jinja
@@ -1,7 +1,7 @@
{% import 'snippets/links.jinja' as links %}
{% import 'snippets/entityrow.jinja' as entityrow %}
-{% set ranges = dbp.get_top_tracks(filterkeys,limitkeys,delimitkeys) %}
+{% set ranges = dbc.get_top_tracks(filterkeys,limitkeys,delimitkeys) %}
{% set maxbar = ranges|map(attribute="scrobbles")|max|default(1) %}
{% if maxbar < 1 %}{% set maxbar = 1 %}{% endif %}
diff --git a/maloja/web/jinja/scrobbles.jinja b/maloja/web/jinja/scrobbles.jinja
index b7b2819..1847f64 100644
--- a/maloja/web/jinja/scrobbles.jinja
+++ b/maloja/web/jinja/scrobbles.jinja
@@ -4,7 +4,7 @@
{% import 'snippets/filterdescription.jinja' as filterdesc %}
{% import 'snippets/pagination.jinja' as pagination %}
-{% set scrobbles = dbp.get_scrobbles(filterkeys,limitkeys,amountkeys) %}
+{% set scrobbles = dbc.get_scrobbles(filterkeys,limitkeys,amountkeys) %}
{% set pages = math.ceil(scrobbles.__len__() / amountkeys.perpage) %}
{% if filterkeys.get('track') is not none %}
diff --git a/maloja/web/jinja/top_artists.jinja b/maloja/web/jinja/top_artists.jinja
index bc78203..d696093 100644
--- a/maloja/web/jinja/top_artists.jinja
+++ b/maloja/web/jinja/top_artists.jinja
@@ -4,7 +4,7 @@
-{% set entries = dbp.get_top_artists(limitkeys,delimitkeys) %}
+{% set entries = dbc.get_top_artists(limitkeys,delimitkeys) %}
{% set repr = entries | find_representative('artist','scrobbles') %}
{% set img = "/favicon.png" if repr is none else utilities.get_artist_image(repr.artist) %}
diff --git a/maloja/web/jinja/top_tracks.jinja b/maloja/web/jinja/top_tracks.jinja
index 99e68a9..cc867f7 100644
--- a/maloja/web/jinja/top_tracks.jinja
+++ b/maloja/web/jinja/top_tracks.jinja
@@ -4,7 +4,7 @@
-{% set entries = dbp.get_top_tracks(filterkeys,limitkeys,delimitkeys) %}
+{% set entries = dbc.get_top_tracks(filterkeys,limitkeys,delimitkeys) %}
{% set repr = entries | find_representative('track','scrobbles') %}
{% set img = "/favicon.png" if repr is none else utilities.get_track_image(repr.track) %}