from django import template from django.utils.safestring import mark_safe import re register = template.Library() @register.filter def key(d, key_name): try: value = d[key_name] except KeyError: from django.conf import settings value = settings.TEMPLATE_STRING_IF_INVALID return value def highlight_text(text, q): q2 = "|".join(q.split()) pattern = re.compile(r"(?P%s)" % q2, re.IGNORECASE) return mark_safe(re.sub(pattern, r"\g", text)) @register.filter def highlight_user(user, q): if user.first_name and user.last_name: text = u"%s %s (%s)" % (user.first_name, user.last_name, user.username) else: text = user.username return highlight_text(text, q) @register.filter def highlight_clipper(clipper, q): if clipper.fullname: text = u"%s (%s)" % (clipper.fullname, clipper.username) else: text = clipper.username return highlight_text(text, q)