Browse Source

Added current ACL to DDT

Ralfp 12 years ago
parent
commit
54e4b8eb1e
4 changed files with 56 additions and 0 deletions
  1. 8 0
      misago/acl/builder.py
  2. 24 0
      misago/acl/panels.py
  3. 3 0
      misago/settings_base.py
  4. 21 0
      templates/debug_toolbar/panels/acl.html

+ 8 - 0
misago/acl/builder.py

@@ -29,6 +29,9 @@ def build_forum_form(request, role):
 class BaseACL(object):
     def __init__(self):
         self.acl = {}
+        
+    def __repr__(self):
+        return '%s (%s)' % (self.__class__.__name__[0:-3], self.__class__.__module__)
 
 
 class ACL(object):
@@ -36,6 +39,11 @@ class ACL(object):
         self.version = version
         self.team = False
 
+    def __iter__(self):
+        for attr in dir(self):
+            if not attr.startswith("__") and attr not in ['team', 'version']:
+                yield self.__dict__[attr]
+
 
 def build_acl(request, roles):
     acl = ACL(request.monitor['acl_version'])

+ 24 - 0
misago/acl/panels.py

@@ -0,0 +1,24 @@
+from debug_toolbar.panels import DebugPanel
+from django.template.loader import render_to_string
+from django.utils.translation import ugettext_lazy as _
+
+class MisagoACLDebugPanel(DebugPanel):
+    name = 'MisagoACL'
+    has_content = True
+
+    def nav_title(self):
+        return _('Misago ACL')
+
+    def title(self):
+        return _('Misago User ACL')
+
+    def url(self):
+        return ''
+
+    def process_request(self, request):
+        self.request = request
+        
+    def content(self):
+        context = self.context.copy()
+        context['acl'] = self.request.acl
+        return render_to_string('debug_toolbar/panels/acl.html', context)

+ 3 - 0
misago/settings_base.py

@@ -93,6 +93,7 @@ PERMISSION_PROVIDERS = (
     'misago.usercp.acl',
     'misago.admin.acl',
     'misago.forums.acl',
+    'misago.threads.acl',
 )
 
 # List of UserCP extensions
@@ -148,6 +149,7 @@ INSTALLED_APPS = (
     'misago.register', # Register New Users
     'misago.activation', # Activate inactive User or resend activation e-mail
     'misago.resetpswd', # Reset User Password
+    'misago.threads', # Threads and Posts
 )
 
 # IP's that can see debug toolbar
@@ -163,6 +165,7 @@ DEBUG_TOOLBAR_PANELS = (
     'debug_toolbar.panels.timer.TimerDebugPanel',
     'debug_toolbar.panels.sql.SQLDebugPanel',
     'debug_toolbar.panels.request_vars.RequestVarsDebugPanel',
+    'misago.acl.panels.MisagoACLDebugPanel',
     'debug_toolbar.panels.headers.HeaderDebugPanel',
     'debug_toolbar.panels.template.TemplateDebugPanel',
     'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel',

+ 21 - 0
templates/debug_toolbar/panels/acl.html

@@ -0,0 +1,21 @@
+{% load i18n %}
+
+{% for provider in acl %}
+<h4>{{ provider }}</h4>
+<table>
+    <thead>
+        <tr>
+            <th style="width: 180px;">{% trans 'Permission' %}</th>
+            <th>{% trans 'Value' %}</th>
+        </tr>
+    </thead>
+    <tbody>
+        {% for perm, value in provider.acl.items %}
+        <tr>
+            <td>{{ perm }}</td>
+            <td>{{ value|default:"None" }}</td>
+        </tr>
+        {% endfor %}
+    </tbody>
+</table>
+{% endfor %}