diff --git a/maloja/jinjaenv/context.py b/maloja/jinjaenv/context.py
index 40d3148..e41f67e 100644
--- a/maloja/jinjaenv/context.py
+++ b/maloja/jinjaenv/context.py
@@ -1,7 +1,7 @@
from .. import database_packed
from . import filters
-from .. import database, database_packed, htmlgenerators, malojatime, utilities, urihandler, malojauri
+from .. import database, database_packed, malojatime, utilities, urihandler, malojauri
from doreah import settings
import urllib
@@ -16,7 +16,6 @@ JINJA_CONTEXT = {
# maloja
"db": database,
"dbp":dbp,
- "htmlgenerators": htmlgenerators,
"malojatime": malojatime,
"utilities": utilities,
"urihandler": urihandler,
diff --git a/maloja/server.py b/maloja/server.py
index 563756e..a927731 100755
--- a/maloja/server.py
+++ b/maloja/server.py
@@ -11,7 +11,6 @@ import waitress
from . import monkey
# rest of the project
from . import database
-from . import htmlgenerators
from . import malojatime
from . import utilities
from . import malojauri
diff --git a/maloja/web/jinja/error.jinja b/maloja/web/jinja/error.jinja
index d143383..1202d71 100644
--- a/maloja/web/jinja/error.jinja
+++ b/maloja/web/jinja/error.jinja
@@ -19,7 +19,9 @@
{% if adminmode %}
You are only seeing this information because you are in admin mode:
-
{{ traceback }}
+ {% autoescape true -%}
+ {{ traceback }}
+ {%- endautoescape %}
{% else %}
A team of Korean schoolgirls with katanas has been dispatched to deal with this situation.
{% endif %}
diff --git a/maloja/web/jinja/partials/charts_artists.jinja b/maloja/web/jinja/partials/charts_artists.jinja
index 2d08110..3b3fdae 100644
--- a/maloja/web/jinja/partials/charts_artists.jinja
+++ b/maloja/web/jinja/partials/charts_artists.jinja
@@ -53,8 +53,8 @@
{{ entityrow.row(e['artist']) }}
- {{ htmlgenerators.scrobblesArtistLink(e['artist'],urihandler.internal_to_uri(limitkeys),amount=e['scrobbles']) }} |
- {{ htmlgenerators.scrobblesArtistLink(e['artist'],urihandler.internal_to_uri(limitkeys),percent=e['scrobbles']*100/maxbar) }} |
+ {{ links.link_scrobbles([{'artist':e['artist'],'timerange':limitkeys.timerange}],amount=e['scrobbles']) }} |
+ {{ links.link_scrobbles([{'artist':e['artist'],'timerange':limitkeys.timerange}],percent=e['scrobbles']*100/maxbar) }} |
{% endif %}
{% endfor %}
diff --git a/maloja/web/jinja/partials/charts_tracks.jinja b/maloja/web/jinja/partials/charts_tracks.jinja
index 7853138..e608138 100644
--- a/maloja/web/jinja/partials/charts_tracks.jinja
+++ b/maloja/web/jinja/partials/charts_tracks.jinja
@@ -50,8 +50,8 @@
{{ entityrow.row(e['track']) }}
- {{ htmlgenerators.scrobblesTrackLink(e['track'],urihandler.internal_to_uri(limitkeys),amount=e['scrobbles']) }} |
- {{ htmlgenerators.scrobblesTrackLink(e['track'],urihandler.internal_to_uri(limitkeys),percent=e['scrobbles']*100/maxbar) }} |
+ {{ links.link_scrobbles([{'track':e.track,'timerange':limitkeys.timerange}],amount=e['scrobbles']) }} |
+ {{ links.link_scrobbles([{'track':e.track,'timerange':limitkeys.timerange}],percent=e['scrobbles']*100/maxbar) }} |
{% endif %}
{% endfor %}
diff --git a/maloja/web/jinja/partials/performance.jinja b/maloja/web/jinja/partials/performance.jinja
index 7353264..6847a7d 100644
--- a/maloja/web/jinja/partials/performance.jinja
+++ b/maloja/web/jinja/partials/performance.jinja
@@ -13,11 +13,11 @@
{{ thisrange.desc() }} |
- {{ '#' + t.rank.__str__() if t.rank is not none else 'n/a' }}
+ {{ links.link_rank(filterkeys,thisrange,rank=t.rank) }}
|
{% set prct = ((minrank+1-t.rank)*100/minrank if t.rank is not none else 0) %}
- {{ htmlgenerators.rankLink(thisrange.urikeys(),percent=prct,medal=t.rank,**filterkeys) }}
+ {{ links.link_rank(filterkeys,thisrange,percent=prct,rank=t.rank) }}
|
diff --git a/maloja/web/jinja/partials/pulse.jinja b/maloja/web/jinja/partials/pulse.jinja
index cc59c05..fb1317d 100644
--- a/maloja/web/jinja/partials/pulse.jinja
+++ b/maloja/web/jinja/partials/pulse.jinja
@@ -1,3 +1,5 @@
+{% import 'snippets/links.jinja' as links %}
+
{% set ranges = dbp.get_pulse(filterkeys,limitkeys,delimitkeys) %}
{% set maxbar = ranges|map(attribute="scrobbles")|max|default(1) %}
@@ -10,10 +12,10 @@
{{ thisrange.desc() }} |
- {{ htmlgenerators.scrobblesLink(thisrange.urikeys(),amount=t.scrobbles,**filterkeys) }}
+ {{ links.link_scrobbles([filterkeys,{'timerange':thisrange}],amount=t.scrobbles) }}
|
- {{ htmlgenerators.scrobblesLink(thisrange.urikeys(),percent=t.scrobbles*100/maxbar,**filterkeys) }}
+ {{ links.link_scrobbles([filterkeys,{'timerange':thisrange}],percent=t.scrobbles*100/maxbar) }}
|
{% endfor %}
diff --git a/maloja/web/jinja/partials/top_artists.jinja b/maloja/web/jinja/partials/top_artists.jinja
index cd457da..2b750a1 100644
--- a/maloja/web/jinja/partials/top_artists.jinja
+++ b/maloja/web/jinja/partials/top_artists.jinja
@@ -1,3 +1,6 @@
+{% import 'snippets/links.jinja' as links %}
+{% import 'snippets/entityrow.jinja' as entityrow %}
+
{% set ranges = dbp.get_top_artists(limitkeys,delimitkeys) %}
{% set maxbar = ranges|map(attribute="scrobbles")|max|default(1) %}
@@ -17,9 +20,9 @@
0 |
|
{% else %}
- {{ htmlgenerators.entity_column(artist,image=utilities.getArtistImage(artist,fast=True)) }}
- {{ htmlgenerators.scrobblesArtistLink(artist,thisrange.urikeys(),amount=e.scrobbles) }} |
- {{ htmlgenerators.scrobblesArtistLink(artist,thisrange.urikeys(),percent=e.scrobbles*100/maxbar) }} |
+ {{ entityrow.row(artist) }}
+ {{ links.link_scrobbles([{'artist':artist,'timerange':thisrange}],amount=e.scrobbles) }} |
+ {{ links.link_scrobbles([{'artist':artist,'timerange':thisrange}],percent=e.scrobbles*100/maxbar) }} |
{% endif %}
diff --git a/maloja/web/jinja/partials/top_tracks.jinja b/maloja/web/jinja/partials/top_tracks.jinja
index 7dd7275..5af27eb 100644
--- a/maloja/web/jinja/partials/top_tracks.jinja
+++ b/maloja/web/jinja/partials/top_tracks.jinja
@@ -1,3 +1,6 @@
+{% import 'snippets/links.jinja' as links %}
+{% import 'snippets/entityrow.jinja' as entityrow %}
+
{% set ranges = dbp.get_top_tracks(filterkeys,limitkeys,delimitkeys) %}
{% set maxbar = ranges|map(attribute="scrobbles")|max|default(1) %}
@@ -17,9 +20,9 @@
0 |
|
{% else %}
- {{ htmlgenerators.entity_column(track,image=utilities.getTrackImage(track.artists,track.title,fast=True)) }}
- {{ htmlgenerators.scrobblesTrackLink(track,thisrange.urikeys(),amount=e.scrobbles) }} |
- {{ htmlgenerators.scrobblesTrackLink(track,thisrange.urikeys(),percent=e.scrobbles*100/maxbar) }} |
+ {{ entityrow.row(track) }}
+ {{ links.link_scrobbles([{'track':track,'timerange':thisrange}],amount=e.scrobbles) }} |
+ {{ links.link_scrobbles([{'track':track,'timerange':thisrange}],percent=e.scrobbles*100/maxbar) }} |
{% endif %}
diff --git a/maloja/web/jinja/snippets/links.jinja b/maloja/web/jinja/snippets/links.jinja
index 92e392d..11430d7 100644
--- a/maloja/web/jinja/snippets/links.jinja
+++ b/maloja/web/jinja/snippets/links.jinja
@@ -23,3 +23,37 @@
{{ mlj_uri.create_uri("/artist",{'artist':entity}) }}
{% endif %}
{%- endmacro %}
+
+
+
+{% macro link_scrobbles(keydicts,amount=None,percent=None) %}
+
+
+ {% if percent is not none %}
+
+ {% elif amount is not none %}
+ {{ amount }}
+ {% endif %}
+
+
+{%- endmacro %}
+
+
+{% macro link_rank(filterkeys,timerange,rank=None,percent=None) %}
+
+ {% if 'track' in filterkeys %}
+ {% set url = mlj_uri.create_uri("/charts_track",{'timerange':timerange}) %}
+ {% elif 'artist' in filterkeys %}
+ {% set url = mlj_uri.create_uri("/charts_artists",{'timerange':timerange}) %}
+ {% endif %}
+
+ {% set rankclass = {1:'gold',2:'silver',3:'bronze'}[rank] or "" %}
+
+
+ {% if percent is not none %}
+
+ {% else %}
+ {% if rank is not none %}#{{ rank }}{% else %}n/a{% endif %}
+ {% endif %}
+
+{%- endmacro %}