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
