Browse Source

Merge pull request #413 from haliphax/after-post-hook

add event hook for after post
Peter Justin 7 years ago
parent
commit
e9180a89d8
2 changed files with 15 additions and 1 deletions
  1. 5 1
      flaskbb/forum/models.py
  2. 10 0
      flaskbb/plugins/spec.py

+ 5 - 1
flaskbb/forum/models.py

@@ -11,7 +11,7 @@
 from datetime import timedelta
 from datetime import timedelta
 import logging
 import logging
 
 
-from flask import abort, url_for
+from flask import abort, current_app, url_for
 from sqlalchemy.orm import aliased
 from sqlalchemy.orm import aliased
 
 
 from flaskbb.extensions import db
 from flaskbb.extensions import db
@@ -205,6 +205,8 @@ class Post(HideableCRUDMixin, db.Model):
         if self.id:
         if self.id:
             db.session.add(self)
             db.session.add(self)
             db.session.commit()
             db.session.commit()
+            current_app.pluggy.hook.flaskbb_event_after_post(post=self,
+                                                             is_new=False)
             return self
             return self
 
 
         # Adding a new post
         # Adding a new post
@@ -234,6 +236,8 @@ class Post(HideableCRUDMixin, db.Model):
             # And commit it!
             # And commit it!
             db.session.add(topic)
             db.session.add(topic)
             db.session.commit()
             db.session.commit()
+            current_app.pluggy.hook.flaskbb_event_after_post(post=self,
+                                                             is_new=True)
             return self
             return self
 
 
     def delete(self):
     def delete(self):

+ 10 - 0
flaskbb/plugins/spec.py

@@ -144,3 +144,13 @@ def flaskbb_tpl_profile_settings_menu():
 
 
     in :file:`templates/user/settings_layout.html`
     in :file:`templates/user/settings_layout.html`
     """
     """
+
+# Event hooks
+
+@spec
+def flaskbb_event_after_post(post, is_new):
+    """Hook for handling a post after it has been saved.
+
+    :param flaskbb.forum.models.Post post: The post which triggered the event
+    :param bool is_new: True if the post is new, False if it is an edit
+    """