Skip to content

Submission tags

hypha.apply.funds.templatetags.submission_tags

register module-attribute

register = Library()
submission_links(value)
Source code in hypha/apply/funds/templatetags/submission_tags.py
@register.filter
def submission_links(value):
    # regex to find #id in a string, which id can be alphanumeric, underscore, hyphen
    matches = re.findall(r"(?<![\w\&])\#([\w-]+)(?!\w)", value)
    links = {}
    if matches:
        numeric_ids = filter(str.isdigit, matches)
        qs = ApplicationSubmission.objects.filter(
            Q(id__in=numeric_ids) | Q(public_id__in=matches)
        )
        for submission in qs:
            links[rf"\#{submission.public_id or submission.id}"] = (
                f'<a href="{submission.get_absolute_url()}">{submission.title} <span class="text-gray-400">#{submission.public_id or submission.id}</span></a>'
            )

    if links:
        for sid, link in links.items():
            value = re.sub(rf"(?<!\w){sid}(?!\w)", link, value)

    return mark_safe(value)