diff --git a/opentech/apply/activity/templates/activity/include/listing_base.html b/opentech/apply/activity/templates/activity/include/listing_base.html index 968145549c7906e711b59a0beabd3f32c15ab66f..23056f2fcd17b5d104676122e098172af5611f71 100644 --- a/opentech/apply/activity/templates/activity/include/listing_base.html +++ b/opentech/apply/activity/templates/activity/include/listing_base.html @@ -19,7 +19,7 @@ updated <a href="{{ activity.submission.get_absolute_url }}">{{ activity.submission.title }}</a> {% endif %} - {{ activity.message|markdown|bleach|submission_links }} + {{ activity.message|submission_links|markdown|bleach }} {% if not submission_title and activity|user_can_see_related:request.user %} {% with url=activity.related_object.get_absolute_url %} diff --git a/opentech/apply/funds/templatetags/submission_tags.py b/opentech/apply/funds/templatetags/submission_tags.py index df63308d547c126dae51cf1ffe0b13b2bd5e3a7e..a55bc257ba5cf4565a0a21d51fe20a5ceee0393e 100644 --- a/opentech/apply/funds/templatetags/submission_tags.py +++ b/opentech/apply/funds/templatetags/submission_tags.py @@ -10,18 +10,15 @@ register = template.Library() @register.filter def submission_links(value): - regex = re.compile('[^\w]\#(\d+)[^\w]') + # Match tags in the format #123 that is not preceeded and/or followed by a word character. + matches = re.findall('(?<!\w)\#(\d+)(?!\w)', value) links = {} - for match in regex.finditer(value): - try: - submission = ApplicationSubmission.objects.get(id=match[1]) - except ApplicationSubmission.DoesNotExist: - pass - else: - links[f'#{submission.id}'] = f'<a href="{submission.get_absolute_url()}">{submission.title} <span class="mid-grey-text">#{submission.id}</span></a>' + if matches: + for submission in ApplicationSubmission.objects.filter(id__in=matches): + links[f'\#{submission.id}'] = f'<a href="{submission.get_absolute_url()}">{submission.title} <span class="mid-grey-text">#{submission.id}</span></a>' if links: for sid, link in links.items(): - value = value.replace(sid, link) + value = re.sub(f'(?<!\w){sid}(?!\w)', link, value) return mark_safe(value) diff --git a/opentech/settings/base.py b/opentech/settings/base.py index ba0565c37b55af5775515ffa66fca01cd55d4311..0fb1fac928d7d236080c582c1207a7f211cdb759 100644 --- a/opentech/settings/base.py +++ b/opentech/settings/base.py @@ -419,11 +419,11 @@ SOCIAL_AUTH_PIPELINE = ( ) # Bleach Settings -BLEACH_ALLOWED_TAGS = ['h2', 'h3', 'p', 'b', 'i', 'em', 'strong', 'a', 'ul', 'ol', 'li', 'br'] +BLEACH_ALLOWED_TAGS = ['h2', 'h3', 'p', 'b', 'i', 'em', 'strong', 'a', 'ul', 'ol', 'li', 'br', 'span'] -BLEACH_ALLOWED_ATTRIBUTES = ['href', 'title', 'style'] +BLEACH_ALLOWED_ATTRIBUTES = ['href', 'title', 'class'] -BLEACH_ALLOWED_STYLES = ['font-family', 'font-weight', 'text-decoration', 'font-variant'] +BLEACH_ALLOWED_STYLES = [] BLEACH_STRIP_TAGS = True