re-parse mentions on display name change
This commit is contained in:
@@ -17,6 +17,8 @@ from ..auth import (
|
|||||||
from ..models import Users, Posts, Reactions, Threads, Avatars, PostHistory, Mentions, BookmarkCollections
|
from ..models import Users, Posts, Reactions, Threads, Avatars, PostHistory, Mentions, BookmarkCollections
|
||||||
from ..constants import PermissionLevel, InfoboxKind
|
from ..constants import PermissionLevel, InfoboxKind
|
||||||
from ..util import get_form_checkbox
|
from ..util import get_form_checkbox
|
||||||
|
from ..lib.babycode import babycode_to_html
|
||||||
|
from ..db import db
|
||||||
import math
|
import math
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
@@ -388,11 +390,28 @@ def set_personalization(username):
|
|||||||
session['sort_by'] = request.form.get('sort_by', 'activity')
|
session['sort_by'] = request.form.get('sort_by', 'activity')
|
||||||
session['dont_subscribe_by_default'] = not get_form_checkbox('subscribe_by_default')
|
session['dont_subscribe_by_default'] = not get_form_checkbox('subscribe_by_default')
|
||||||
|
|
||||||
|
old_display_name = user.display_name
|
||||||
|
new_display_name = parse_display_name(request.form.get('display_name', ''))
|
||||||
|
|
||||||
user.update({
|
user.update({
|
||||||
'status': request.form.get('status', '')[:100],
|
'status': request.form.get('status', '')[:100],
|
||||||
'display_name': parse_display_name(request.form.get('display_name', ''))
|
'display_name': new_display_name
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if old_display_name != new_display_name:
|
||||||
|
# re-parse posts with mentions
|
||||||
|
q = """SELECT DISTINCT m.revision_id FROM mentions m
|
||||||
|
JOIN post_history ph ON m.revision_id = ph.id
|
||||||
|
JOIN posts p ON p.current_revision_id = ph.id
|
||||||
|
WHERE m.mentioned_user_id = ?"""
|
||||||
|
mentions = db.query(q, int(user.id))
|
||||||
|
with db.transaction():
|
||||||
|
for mention in mentions:
|
||||||
|
rev = PostHistory.find({'id': int(mention['revision_id'])})
|
||||||
|
parsed_content = babycode_to_html(rev.original_markup).result
|
||||||
|
rev.update({'content': parsed_content})
|
||||||
|
|
||||||
|
|
||||||
flash('Personalization settings updated.', InfoboxKind.INFO)
|
flash('Personalization settings updated.', InfoboxKind.INFO)
|
||||||
return redirect(url_for('.settings', username=username))
|
return redirect(url_for('.settings', username=username))
|
||||||
|
|
||||||
|
|||||||
@@ -848,7 +848,7 @@ a.mention {
|
|||||||
padding: var(--base-padding);
|
padding: var(--base-padding);
|
||||||
background-color: var(--mention-color);
|
background-color: var(--mention-color);
|
||||||
color: black;
|
color: black;
|
||||||
border: 1px dashed;
|
border: 1px solid hsl(from var(--mention-color) h s 55%);
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: var(--hover-color);
|
background-color: var(--hover-color);
|
||||||
|
|||||||
Reference in New Issue
Block a user