From 2fa87a88c0d7ff004a99e9729da6c530278020f7 Mon Sep 17 00:00:00 2001
From: Nicolas Joyard <joyard.nicolas@gmail.com>
Date: Sun, 12 Jun 2016 11:00:04 +0200
Subject: [PATCH] Fix URLs on mep pages and enhance fb username extraction

---
 memopol/templatetags/memopol_tags.py | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/memopol/templatetags/memopol_tags.py b/memopol/templatetags/memopol_tags.py
index 20bb316a..d7a853bf 100644
--- a/memopol/templatetags/memopol_tags.py
+++ b/memopol/templatetags/memopol_tags.py
@@ -16,22 +16,32 @@ def cssify(string):
     return re.sub('[^a-z_-]', '', string.lower())
 
 
+def fix_url(url):
+    # Ensure we have a usable URL
+    return re.sub('^(https?://)?', 'https://', url.strip())
+
+
 @register.filter
 def twitter_link(url):
-    return mark_safe(link.format(network='twitter', url=url,
-        label=re.sub(r'.*/@?([^/]+)', '@\\1', re.sub(r'/$', '', url.strip()))))
+    furl = fix_url(url)
+    return mark_safe(link.format(network='twitter', url=furl,
+        label=re.sub(r'.*/@?([^/]+)', '@\\1', re.sub(r'/$', '', furl))))
 
 
 @register.filter
 def facebook_link(url):
-    return mark_safe(link.format(network='facebook', url=url,
-        label=re.sub(r'.*/([^/]+)', '\\1', re.sub(r'/$', '', url.strip()))))
+    furl = fix_url(url)
+    clean_url = re.sub(r'/$', '', re.sub(r'\?.*', '', furl))
+    m = re.search(r'/pages/([^/]+)', clean_url, re.I)
+    return mark_safe(link.format(network='facebook', url=furl,
+        label=m.group(1) if m else re.sub(r'.*/([^/]+)', '\\1', clean_url)))
 
 
 @register.filter
 def website_link(url):
-    short_url = re.sub(r'^https?://([^/]+).*', '\\1', url)
-    return mark_safe(link.format(network='website', url=url,
+    furl = fix_url(url)
+    short_url = re.sub(r'^https?://([^/]+).*', '\\1', furl)
+    return mark_safe(link.format(network='website', url=furl,
         label=short_url))
 
 
-- 
GitLab