[#8171] changes in user's full name will now change activity record entries too
diff --git a/Allura/allura/lib/plugin.py b/Allura/allura/lib/plugin.py
index aafe236..45bc309 100644
--- a/Allura/allura/lib/plugin.py
+++ b/Allura/allura/lib/plugin.py
@@ -54,6 +54,7 @@
from allura.lib import security
from allura.lib import exceptions as forge_exc
from allura.lib import utils
+from allura.tasks import activity_tasks
from allura.tasks.index_tasks import solr_del_project_artifacts
log = logging.getLogger(__name__)
@@ -1489,6 +1490,9 @@
return getattr(user, pref_name)
def set_pref(self, user, pref_name, pref_value):
+ if pref_name == 'display_name' and asbool(config.get('activitystream.recording.enabled', False)):
+ activity_tasks.change_user_name.post(user._id, pref_value)
+
if pref_name in user.preferences:
user.preferences[pref_name] = pref_value
else:
diff --git a/Allura/allura/tasks/activity_tasks.py b/Allura/allura/tasks/activity_tasks.py
index 26ac02a..312d9ec 100644
--- a/Allura/allura/tasks/activity_tasks.py
+++ b/Allura/allura/tasks/activity_tasks.py
@@ -16,6 +16,7 @@
# under the License.
from pylons import app_globals as g
+from activitystream.storage.mingstorage import Activity
from allura.lib.decorators import task
@@ -23,3 +24,14 @@
@task
def create_timelines(node_id):
g.director.create_timelines(node_id)
+
+
+@task
+def change_user_name(user_id, new_name):
+ Activity.query.update(
+ {'actor.node_id': "User:{}".format(user_id)},
+ {'$set': {
+ "actor.activity_name": new_name,
+ }},
+ multi=True
+ )