diff --git a/memopol/templatetags/memopol_tags.py b/memopol/templatetags/memopol_tags.py index 840124bab55acf4e677a9e1b9d2d1ea90f8f415e..20bb316a9ff824eef0144a39a728ff0be652c31f 100644 --- a/memopol/templatetags/memopol_tags.py +++ b/memopol/templatetags/memopol_tags.py @@ -3,12 +3,17 @@ import re from django import template +from django.contrib.humanize.templatetags.humanize import naturalday from django.core.urlresolvers import reverse from django.utils.safestring import mark_safe from django.utils.html import escape register = template.Library() -link = '<a class="{network}-link" href="{url}" target="_blank">{label}</a>' +link = u'<a class="{network}-link" href="{url}" target="_blank">{label}</a>' + + +def cssify(string): + return re.sub('[^a-z_-]', '', string.lower()) @register.filter @@ -65,3 +70,83 @@ def country_url(country): 'group_kind': 'country', 'group': country.name })) + + +@register.filter +def country_flag(country): + # Enable using groups instead of countries + code = country.code if hasattr(country, 'code') else country.abbreviation + return mark_safe( + '<span class="flag-icon flag-icon-{code}"></span> {name}'.format( + name=country.name, + code=code.lower())) + + +@register.filter +def chamber_icon(chamber): + return mark_safe( + u'<span class="chamber-icon ' + + u'chamber-icon-{abbr}"></span> {name}'.format( + name=chamber.name, + abbr=cssify(chamber.abbreviation))) + + +@register.filter +def mandate_icon(main_mandate): + return mark_safe( + u'<span class="group-icon ' + + u'group-icon-{abbr}"></span> {role} of {name}'.format( + role=main_mandate.role, + name=main_mandate.group.name, + abbr=cssify(main_mandate.group.abbreviation))) + + +@register.filter +def group_icon(group): + return mark_safe( + u'<span class="group-icon ' + + u'group-icon-{abbr}"></span> {name}'.format( + abbr=cssify(group.abbreviation), + name=group.abbreviation)) + + +@register.filter +def group_long_icon(group): + return mark_safe( + u'<span class="group-icon ' + + u'group-icon-{abbr}"></span> {name}'.format( + abbr=cssify(group.abbreviation), + name=group.name)) + + +@register.filter +def mandate_date(date, arg=None): + if date is None or date.year == 9999: + return 'present' + else: + return naturalday(date, arg) + + +@register.filter +def position_icon(position): + if position == 'for': + return mark_safe( + '<i \ + aria-label="for" \ + class="fa fa-thumbs-up vote_positive" \ + title="for" \ + ></i>') + elif position == 'against': + return mark_safe( + '<i \ + aria-label="against" \ + class="fa fa-thumbs-down vote_negative" \ + title="against" \ + ></i>') + else: + return mark_safe( + '<i \ + aria-label="abstain" \ + class="fa fa-circle-o vote_abstain" \ + title="abstain" \ + ></i>')