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

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

commit 76afd5b8632aa623036f69daf5d4e57b55863232
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')

Reply via email to