Skip to content

Commit 2d76eab

Browse files
committed
template filter to only urlize if not in bad links list
This is currently quite unoptimised so might need improvement
1 parent 7f8e917 commit 2d76eab

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

crowdsourcer/templatetags/neighbourhood_filters.py

+11
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
from django.utils.html import Urlizer
44
from django.utils.safestring import mark_safe
55

6+
from utils.data_checking import check_if_url_bad
7+
68
register = template.Library()
79

810

@@ -24,3 +26,12 @@ def urlize_external(text, autoescape=True):
2426
text, trim_url_limit=None, nofollow=True, autoescape=autoescape
2527
)
2628
)
29+
30+
31+
@register.filter(is_safe=True, needs_autoescape=True)
32+
@stringfilter
33+
def check_if_broken(text, autoescape=True):
34+
if check_if_url_bad(text):
35+
return mark_safe(f'<span class="text-danger">{text}</span>')
36+
else:
37+
return mark_safe(urlizer_external(text))

utils/data_checking.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
from django.conf import settings
2+
3+
import pandas as pd
4+
5+
6+
def get_bad_urls():
7+
file = settings.BASE_DIR / "data" / "broken_links.csv"
8+
if file.exists():
9+
df = pd.read_csv(file)
10+
11+
links = df["url"]
12+
13+
return set(links)
14+
15+
return []
16+
17+
18+
def check_if_url_bad(url):
19+
bad_urls = get_bad_urls()
20+
21+
if url in bad_urls:
22+
return True
23+
24+
return False

0 commit comments

Comments
 (0)