This is an automated email from the ASF dual-hosted git repository.

dill0wn pushed a commit to branch dw/8458
in repository https://gitbox.apache.org/repos/asf/allura.git

commit 2f0e5141d78142b6a28308d2a9f58086b583b9a1
Author: Dillon Walls <[email protected]>
AuthorDate: Wed Aug 31 21:01:15 2022 +0000

    [#8458] audit log - discussion - log forum admin actions to auditlog
---
 ForgeDiscussion/forgediscussion/forum_main.py | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/ForgeDiscussion/forgediscussion/forum_main.py 
b/ForgeDiscussion/forgediscussion/forum_main.py
index 262b5a196..db84bf62a 100644
--- a/ForgeDiscussion/forgediscussion/forum_main.py
+++ b/ForgeDiscussion/forgediscussion/forum_main.py
@@ -315,6 +315,15 @@ class ForumAdminController(DefaultAdminController):
     def update_forums(self, forum=None, **kw):
         if forum is None:
             forum = []
+
+        mount_point = self.app.config.options['mount_point']
+
+        def set_value(forum, name, val):
+            if getattr(forum, name, None) != val:
+                M.AuditLog.log('{}: {} - set option "{}" {} => {}'.format(
+                    mount_point, forum.name, name, getattr(forum, name, None), 
val))
+            setattr(forum, name, val)
+
         for f in forum:
             forum = DM.Forum.query.get(_id=ObjectId(str(f['id'])))
             if f.get('delete'):
@@ -331,23 +340,23 @@ class ForumAdminController(DefaultAdminController):
                 if '.' in f['shortname'] or '/' in f['shortname'] or ' ' in 
f['shortname']:
                     flash('Shortname cannot contain space . or /', 'error')
                     redirect('.')
-                forum.name = f['name']
-                forum.shortname = f['shortname']
-                forum.description = f['description']
-                forum.monitoring_email = f['monitoring_email']
+                set_value(forum, 'name', f['name'])
+                set_value(forum, 'shortname', f['shortname'])
+                set_value(forum, 'description', f['description'])
+                set_value(forum, 'monitoring_email', f['monitoring_email'])
                 if 'members_only' in f:
                     if 'anon_posts' in f:
                         flash(
                             'You cannot have anonymous posts in a members only 
forum.', 'warning')
-                        forum.anon_posts = False
+                        set_value(forum, 'anon_posts', False)
                         del f['anon_posts']
-                    forum.members_only = True
+                    set_value(forum, 'members_only', True)
                 else:
-                    forum.members_only = False
+                    set_value(forum, 'members_only', False)
                 if 'anon_posts' in f:
-                    forum.anon_posts = True
+                    set_value(forum, 'anon_posts', True)
                 else:
-                    forum.anon_posts = False
+                    set_value(forum, 'anon_posts', False)
                 role_anon = M.ProjectRole.anonymous()._id
                 if forum.members_only:
                     role_developer = M.ProjectRole.by_name('Developer')._id

Reply via email to