Browse Source

Replace old template filter permissions with new ones

Alec Nikolas Reiter 9 years ago
parent
commit
25648ac870
1 changed files with 36 additions and 26 deletions
  1. 36 26
      flaskbb/app.py

+ 36 - 26
flaskbb/app.py

@@ -12,6 +12,7 @@ import os
 import logging
 import logging
 import datetime
 import datetime
 import time
 import time
+from functools import partial
 
 
 from sqlalchemy import event
 from sqlalchemy import event
 from sqlalchemy.engine import Engine
 from sqlalchemy.engine import Engine
@@ -25,7 +26,6 @@ from flaskbb.user.views import user
 from flaskbb.user.models import User, Guest
 from flaskbb.user.models import User, Guest
 # Import the (private) message blueprint
 # Import the (private) message blueprint
 from flaskbb.message.views import message
 from flaskbb.message.views import message
-from flaskbb.message.models import Conversation
 # Import the auth blueprint
 # Import the auth blueprint
 from flaskbb.auth.views import auth
 from flaskbb.auth.views import auth
 # Import the admin blueprint
 # Import the admin blueprint
@@ -42,9 +42,11 @@ from flaskbb.utils.helpers import format_date, time_since, crop_title, \
     render_template
     render_template
 from flaskbb.utils.translations import FlaskBBDomain
 from flaskbb.utils.translations import FlaskBBDomain
 # permission checks (here they are used for the jinja filters)
 # permission checks (here they are used for the jinja filters)
-from flaskbb.utils.permissions import can_post_reply, can_post_topic, \
-    can_delete_topic, can_delete_post, can_edit_post, can_edit_user, \
-    can_ban_user, can_moderate, is_admin, is_moderator, is_admin_or_moderator
+from flaskbb.utils.requirements import (
+    IsAdmin, IsAtleastModerator, IsAtleastModeratorInForum,
+    CanBanUser, CanEditUser, CanEditPost, CanDeletePost, CanDeleteTopic,
+    CanPostReply, CanPostTopic
+)
 # app specific configurations
 # app specific configurations
 from flaskbb.utils.settings import flaskbb_config
 from flaskbb.utils.settings import flaskbb_config
 
 
@@ -158,28 +160,36 @@ def configure_extensions(app):
 
 
 def configure_template_filters(app):
 def configure_template_filters(app):
     """Configures the template filters."""
     """Configures the template filters."""
-
-    app.jinja_env.filters['markup'] = render_markup
-    app.jinja_env.filters['format_date'] = format_date
-    app.jinja_env.filters['time_since'] = time_since
-    app.jinja_env.filters['is_online'] = is_online
-    app.jinja_env.filters['crop_title'] = crop_title
-    app.jinja_env.filters['forum_is_unread'] = forum_is_unread
-    app.jinja_env.filters['topic_is_unread'] = topic_is_unread
-    # Permission filters
-    app.jinja_env.filters['edit_post'] = can_edit_post
-    app.jinja_env.filters['delete_post'] = can_delete_post
-    app.jinja_env.filters['delete_topic'] = can_delete_topic
-    app.jinja_env.filters['post_reply'] = can_post_reply
-    app.jinja_env.filters['post_topic'] = can_post_topic
-    # Moderator permission filters
-    app.jinja_env.filters['is_admin'] = is_admin
-    app.jinja_env.filters['is_moderator'] = is_moderator
-    app.jinja_env.filters['is_admin_or_moderator'] = is_admin_or_moderator
-    app.jinja_env.filters['can_moderate'] = can_moderate
-
-    app.jinja_env.filters['can_edit_user'] = can_edit_user
-    app.jinja_env.filters['can_ban_user'] = can_ban_user
+    filters = {}
+
+    filters['markup'] = render_markup
+    filters['format_date'] = format_date
+    filters['time_since'] = time_since
+    filters['is_online'] = is_online
+    filters['crop_title'] = crop_title
+    filters['forum_is_unread'] = forum_is_unread
+    filters['topic_is_unread'] = topic_is_unread
+
+    permissions = [
+        ('is_admin', IsAdmin),
+        ('is_moderator', IsAtleastModerator),
+        ('is_admin_or_moderator', IsAtleastModerator),
+        ('can_edit_user', CanEditUser),
+        ('can_ban_user', CanBanUser),
+        ('edit_post', CanEditPost),
+        ('delete_post', CanDeletePost),
+        ('delete_topic', CanDeleteTopic),
+        ('post_reply', CanPostReply),
+        ('post_topic', CanPostTopic),
+        # will pull forum ID from request
+        ('can_moderate', IsAtleastModeratorInForum(None))
+    ]
+
+    filters.update([
+        (name, partial(perm, request=request)) for name, perm in permissions
+    ])
+
+    app.jinja_env.filters.update(filters)
 
 
 
 
 def configure_context_processors(app):
 def configure_context_processors(app):