Bubble [main]
Fixed: Strip links in profile description
[1mdiff --git a/feeds.py b/feeds.py[m
[1mindex a20ec0c..1f5944c 100644[m
[1m--- a/feeds.py[m
[1m+++ b/feeds.py[m
[36m@@ -739,7 +739,7 @@[m [mdef make_feed_page(session):[m
else:[m
if c_user and (c_user.info or c_user.url or c_user.flair):[m
if c_user.info:[m
[31m- topinfo += c_user.info + '\n'[m
[32m+[m[32m topinfo += clean_description(c_user.info) + '\n'[m
if c_user.url:[m
topinfo += f'=> {c_user.url}\n'[m
if c_user.flair:[m
[36m@@ -747,7 +747,7 @@[m [mdef make_feed_page(session):[m
topinfo += f'\n{flair}'[m
elif context:[m
if context.info:[m
[31m- topinfo += context.info + '\n'[m
[32m+[m[32m topinfo += clean_description(context.info) + '\n'[m
if context.url:[m
topinfo += f'=> {context.url}\n'[m
# Users moderating this subspace.[m
[1mdiff --git a/settings.py b/settings.py[m
[1mindex ba71d96..ef5f881 100644[m
[1m--- a/settings.py[m
[1m+++ b/settings.py[m
[36m@@ -388,7 +388,7 @@[m [mdef make_settings_page(session):[m
elif req.path == session.path + 'settings/info/' + token:[m
if req.query == None:[m
return 10, 'Enter profile description:'[m
[31m- db.update_user(session.user, info=clean_query(req))[m
[32m+[m[32m db.update_user(session.user, info=clean_description(clean_query(req)))[m
return 30, '/settings/profile'[m
[m
elif req.path == session.path + 'settings/email':[m
[1mdiff --git a/subspace.py b/subspace.py[m
[1mindex d82140b..5ac1c41 100644[m
[1m--- a/subspace.py[m
[1m+++ b/subspace.py[m
[36m@@ -247,7 +247,7 @@[m [mdef subspace_admin_actions(session, action):[m
if action == 'info':[m
if req.query == None:[m
return 10, f"Description for {session.context.title()}:"[m
[31m- db.update_subspace(session.context, info=clean_title(clean_query(req)), actor_id=user.id)[m
[32m+[m[32m db.update_subspace(session.context, info=clean_description(clean_query(req)), actor_id=user.id)[m
return 30, admin_link[m
[m
if action == 'url':[m
[36m@@ -437,12 +437,12 @@[m [mdef make_search_page(session):[m
if isinstance(obj, User):[m
page += f'=> /u/{obj.name} {obj.avatar} u/{obj.name}\n'[m
if obj.info:[m
[31m- page += f'{obj.info[:300].strip()}\n'[m
[32m+[m[32m page += f'{clean_title(strip_links(obj.info))[:300].strip()}\n'[m
[m
elif isinstance(obj, Subspace):[m
page += f'=> /s/{obj.name} s/{obj.name}\n'[m
if obj.info:[m
[31m- page += f'{obj.info[:300].strip()}\n'[m
[32m+[m[32m page += f'{clean_title(strip_links(obj.info))[:300].strip()}\n'[m
[m
elif isinstance(obj, Post):[m
ctx = ("u/" if obj.sub_owner else "s/") + obj.sub_name[m
[1mdiff --git a/utils.py b/utils.py[m
[1mindex f7fb258..8ee2128 100644[m
[1m--- a/utils.py[m
[1m+++ b/utils.py[m
[36m@@ -166,6 +166,21 @@[m [mdef clean_title(title):[m
return title[m
[m
[m
[32m+[m[32mdef clean_description(desc):[m
[32m+[m[32m # Strip links but keep other formatting.[m
[32m+[m[32m cleaned = [][m
[32m+[m[32m pre = False[m
[32m+[m[32m for line in desc.split('\n'):[m
[32m+[m[32m line = line.strip()[m
[32m+[m[32m if line.startswith('```'):[m
[32m+[m[32m pre = not pre[m
[32m+[m[32m if not pre:[m
[32m+[m[32m if line.startswith('=>'):[m
[32m+[m[32m continue[m
[32m+[m[32m cleaned.append(line)[m
[32m+[m[32m return '\n'.join(cleaned)[m
[32m+[m
[32m+[m
def clean_tinylog(text):[m
# Clean it up as per Tinylog specification.[m
clean = [][m