This is an automated email from the ASF dual-hosted git repository. gcruz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/allura.git
commit c633705fe2ed053b19ca79f31d0648312cac0dd8 Author: Dillon Walls <[email protected]> AuthorDate: Fri Aug 5 20:53:41 2022 +0000 [#8451] record forum add/delete in audit log --- ForgeDiscussion/forgediscussion/forum_main.py | 6 ++++++ .../forgediscussion/tests/functional/test_forum_admin.py | 8 ++++++++ ForgeDiscussion/forgediscussion/utils.py | 4 +++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/ForgeDiscussion/forgediscussion/forum_main.py b/ForgeDiscussion/forgediscussion/forum_main.py index fca6fc899..262b5a196 100644 --- a/ForgeDiscussion/forgediscussion/forum_main.py +++ b/ForgeDiscussion/forgediscussion/forum_main.py @@ -319,8 +319,14 @@ class ForumAdminController(DefaultAdminController): forum = DM.Forum.query.get(_id=ObjectId(str(f['id']))) if f.get('delete'): forum.deleted = True + M.AuditLog.log('deleted forum "{}" from {}'.format( + forum.name, + self.app.config.options['mount_point'])) elif f.get('undelete'): forum.deleted = False + M.AuditLog.log('undeleted forum "{}" from {}'.format( + forum.name, + self.app.config.options['mount_point'])) else: if '.' in f['shortname'] or '/' in f['shortname'] or ' ' in f['shortname']: flash('Shortname cannot contain space . or /', 'error') diff --git a/ForgeDiscussion/forgediscussion/tests/functional/test_forum_admin.py b/ForgeDiscussion/forgediscussion/tests/functional/test_forum_admin.py index 6da55ea5c..ca14d1c37 100644 --- a/ForgeDiscussion/forgediscussion/tests/functional/test_forum_admin.py +++ b/ForgeDiscussion/forgediscussion/tests/functional/test_forum_admin.py @@ -36,6 +36,7 @@ class TestForumAdmin(TestController): self.app.get('/discussion/') def test_forum_CRUD(self): + project = M.Project.query.get(shortname='test') r = self.app.get('/admin/discussion/forums') form = r.forms['add-forum'] form['add_forum.shortname'] = 'testforum' @@ -51,6 +52,8 @@ class TestForumAdmin(TestController): 'forum-0.shortname': 'NewTestForum', 'forum-0.description': 'My desc', 'forum-0.monitoring_email': ''}) + audit_log = M.AuditLog.query.find({'project_id': project._id}).sort('_id', -1).first() + assert 'created forum "Test Forum"' in audit_log.message r = self.app.get('/admin/discussion/forums') assert 'New Test Forum' in r assert 'My desc' in r @@ -129,6 +132,7 @@ class TestForumAdmin(TestController): assert 'error' in r def test_delete_undelete(self): + project = M.Project.query.get(shortname='test') r = self.app.get('/admin/discussion/forums') form = r.forms['add-forum'] form['add_forum.shortname'] = 'testforum' @@ -148,6 +152,8 @@ class TestForumAdmin(TestController): r = self.app.get('/admin/discussion/forums') soup_form = r.html.find('form', action='update_forums') assert len(soup_form.findAll('input', {'value': 'Delete'})) == 1 + audit_log = M.AuditLog.query.find({'project_id': project._id}).sort('_id', -1).first() + assert 'deleted forum "Test Forum"' in audit_log.message r = self.app.post('/admin/discussion/update_forums', params={'forum-0.undelete': 'on', 'forum-0.id': str(frm._id), @@ -156,6 +162,8 @@ class TestForumAdmin(TestController): r = self.app.get('/admin/discussion/forums') soup_form = r.html.find('form', action='update_forums') assert len(soup_form.findAll('input', {'value': 'Delete'})) == 2 + audit_log = M.AuditLog.query.find({'project_id': project._id}).sort('_id', -1).first() + assert 'undeleted forum "Test Forum"' in audit_log.message def test_members_only(self): # make a forum anyone can see diff --git a/ForgeDiscussion/forgediscussion/utils.py b/ForgeDiscussion/forgediscussion/utils.py index 1169caf9f..f830ae9f5 100644 --- a/ForgeDiscussion/forgediscussion/utils.py +++ b/ForgeDiscussion/forgediscussion/utils.py @@ -20,7 +20,7 @@ from bson import ObjectId from tg import flash from allura.lib import helpers as h -from allura.model import ProjectRole, ACE, ALL_PERMISSIONS, DENY_ALL +from allura.model import ProjectRole, ACE, ALL_PERMISSIONS, DENY_ALL, AuditLog from forgediscussion import model as DM @@ -43,6 +43,8 @@ def create_forum(app, new_forum): anon_posts=new_forum.get('anon_posts', False), monitoring_email=new_forum.get('monitoring_email', None), ) + AuditLog.log('created forum "{}" for {}'.format( + f.name, app.config.options['mount_point'])) if f.members_only and f.anon_posts: flash('You cannot have anonymous posts in a members only forum.', 'warning')
