From 93bccb14ef5c2afb088b455bb40d2631a957ceff Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Thu, 13 Aug 2020 16:50:27 +0200 Subject: [PATCH] Add template filter add_room_links Add a filter which greps room patterns in a string and converts them to a link to our twiki room map. --- mpicms/base/templatetags/base_tags.py | 32 +++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/mpicms/base/templatetags/base_tags.py b/mpicms/base/templatetags/base_tags.py index 0286963..30d4a5e 100644 --- a/mpicms/base/templatetags/base_tags.py +++ b/mpicms/base/templatetags/base_tags.py @@ -1,4 +1,9 @@ +import re + from django import template +from django.template.defaultfilters import stringfilter +from django.utils.html import conditional_escape +from django.utils.safestring import mark_safe from mpicms.base.utils import get_room_link @@ -26,3 +31,30 @@ def remove_i18n(url): if url.startswith('/en') or url.startswith('/de'): return url[3:] return url + + +# The ROOM_PATTERN should be in sync with the twiki plugin setting +# in http://twiki.molgen.mpg.de/foswiki/System/RoomsPlugin + +ROOM_PATTERN = re.compile( + "(" + r"R[0-4]\d\d[abc]?" + r"|[012]\.[012][012]\d\.?\d?[ab]?" + r"|B[01]\.[01][0-9]" + r"|KB\.0[01]|E[012]\da?" + r"|K4?\.[012][012]\d?(?:\.\d)?" + r"|K[B123]\.\d\d\d?[abc]?" + r"|W[012]\d[abc]?" + r"|K[TV]1?\.[012]\d[abcdefg]?" + r"|TH[0-5]\d[ab]?" + r"|HS\d\d" + r"|GH[01]\d" + r"|[K0123]\.[1234]\.F?\d\d" + ")" ) + +@register.filter(needs_autoescape=True) +@stringfilter +def add_room_links(rooms, autoescape=True): + if autoescape: + rooms = conditional_escape(rooms) + return mark_safe(ROOM_PATTERN.sub(r'\1', rooms))