Browse Source

Forum Team list is done.

Ralfp 12 years ago
parent
commit
e89bc61e40

+ 1 - 0
misago/acl/builder.py

@@ -21,6 +21,7 @@ class BaseACL(object):
 class ACL(object):
     def __init__(self, version):
         self.version = version
+        self.team = False
 
 
 def build_acl(request, roles):

+ 3 - 0
misago/acl/middleware.py

@@ -20,4 +20,7 @@ class ACLMiddleware(object):
             cache.set(acl_key, user_acl, 2592000)
 
         request.acl = user_acl
+        if request.user.is_authenticated() and (request.acl.team or request.user.is_god()) != request.user.is_team:
+            request.user.is_team = (request.acl.team or request.user.is_god())
+            request.user.save(force_update=True)
         

+ 4 - 1
misago/admin/acl.py

@@ -23,4 +23,7 @@ def build(acl, roles):
     
     for role in roles:
         if 'can_use_acp' in role and role['can_use_acp'] > acl.admin.acl['can_use_acp']:
-            acl.admin.acl['can_use_acp'] = role['can_use_acp']
+            acl.admin.acl['can_use_acp'] = role['can_use_acp']
+            
+    if acl.admin.acl['can_use_acp']:
+        acl.team = True

+ 14 - 4
misago/admin/layout/overview.py

@@ -2,6 +2,7 @@ from django.conf.urls import patterns, include, url
 from django.utils.translation import ugettext_lazy as _
 from misago.admin import AdminAction
 from misago.sessions.models import Session
+from misago.users.models import User
 
 ADMIN_ACTIONS=(
    AdminAction(
@@ -50,13 +51,22 @@ ADMIN_ACTIONS=(
                ),
    AdminAction(
                section='overview',
-               id='staff',
+               id='team',
                name=_("Forum Team"),
                help=_("List of all forum team members"),
                icon='user',
-               route='admin_overview_staff',
-               urlpatterns=patterns('misago.admin.views',
-                        url(r'^$', 'todo', name='admin_overview_staff'),
+               model=User,
+               actions=[
+                        {
+                         'id': 'list',
+                         'name': _("Forum Team Members"),
+                         'help': _("List of all forum team members"),
+                         'route': 'admin_team'
+                         },
+                        ],
+               route='admin_team',
+               urlpatterns=patterns('misago.team.views',
+                        url(r'^$', 'List', name='admin_team'),
                     ),
                ),
 )

+ 1 - 3
misago/admin/widgets.py

@@ -49,9 +49,7 @@ class BaseWidget(object):
         return 'admin_%s' % self.id
          
     def get_template(self, template):
-        return ('%s/%ss/%s.html' % (str(self.admin.model.__module__).split('.')[1], str(self.admin.model.__name__).lower(), template),
-                '%s/%s.html' % (str(self.admin.model.__module__).split('.')[1], template),
-                '%ss/%s.html' % (str(self.admin.model.__name__).lower(), template),
+        return ('%s/%s.html' % (self.admin.id, template),
                 'admin/%s.html' % template)
             
     def get_fallback_url(self, request):

+ 1 - 0
misago/settings_base.py

@@ -126,6 +126,7 @@ INSTALLED_APPS = (
     'misago.template', # Templates extensions
     'misago.themes', # Themes
     'misago.users', # Users foundation
+    'misago.team', # Forum Team List
     'misago.prune', # Prune Users
     'misago.ranks', # User Ranks
     'misago.roles', # User Roles

+ 0 - 0
misago/team/__init__.py


+ 16 - 0
misago/team/views.py

@@ -0,0 +1,16 @@
+from django.utils.translation import ugettext as _
+from misago.admin import site
+from misago.admin.widgets import ListWidget
+
+class List(ListWidget):
+    admin = site.get_action('team')
+    id = 'list'
+    columns=(
+             ('username', _("Team Member")),
+             )
+    default_sorting = 'username_slug'
+    hide_actions = True
+    pagination = 50
+    
+    def select_items(self, items):
+        return items.filter(is_team=1)

+ 1 - 0
misago/users/models.py

@@ -163,6 +163,7 @@ class User(models.Model):
     signature_ban_reason_admin = models.TextField(null=True,blank=True)
     timezone = models.CharField(max_length=255,default='utc')
     roles = models.ManyToManyField('roles.Role')
+    is_team = models.BooleanField(default=False,db_index=True)
     acl_key = models.CharField(max_length=12,null=True,blank=True)
     
     objects = UserManager()   

+ 29 - 0
templates/admin/team/list.html

@@ -0,0 +1,29 @@
+{% extends "admin/admin/list.html" %}
+{% load i18n %}
+{% load l10n %}
+{% load url from future %}
+
+{% block action_body scoped %}
+<table class="table table-striped table-users">
+  <thead>
+    <tr>
+      <th colspan="2">{% trans %}Forum Team Members{% endtrans %}</th>
+    </tr>
+  </thead>
+  <tbody>   	
+    <tr>
+      {% for user in items %} 
+      <td class="colspan6">
+          <a href="{% url 'user' username=user.username_slug, user=user.pk %}"><img src="{{ user.get_avatar() }}" class="avatar" alt="{% trans %}User's Avatar{% endtrans %}" title="{% trans %}Admin's Avatar{% endtrans %}"> <strong>{{ user.username }}</strong></a>
+      </td>{% if loop.last and loop.index is odd %}
+      <td class="span6">
+      	&nbsp;
+      </td>
+      {% endif %}{% if not loop.last and loop.index is even %}
+    </tr>
+    <tr>{% endif %}
+      {% endfor %}
+    </tr>
+  </tbody>
+</table>
+{% endblock %}

+ 1 - 1
templates/admin/users/list.html

@@ -26,7 +26,7 @@
 {% block table_row scoped %}
   <td class="avatar-small"><img src="{{ item.get_avatar('small') }}" class="avatar-small" alt="{% trans %}User Avatar{% endtrans %}"></td>
   <td colspan="2" class="lead-cell">
-  	<strong>{{ item.username }}</strong> <span class="muted">{{ item.email }}</span>{% if item.is_admin() %} <span class="label label-important">{% trans %}Admin{% endtrans %}</span>{% elif item.is_protected() %} <span class="label label-info">{% trans %}Team{% endtrans %}</span>{% endif %}{% if item.activation > 0 %} <span class="label tooltip-top" title="{% if item.activation == 1 -%}
+  	<strong>{{ item.username }}</strong> <span class="muted">{{ item.email }}</span>{% if item.activation > 0 %} <span class="label tooltip-top" title="{% if item.activation == 1 -%}
   	{% trans %}This user has not yet validated his e-mail address.{% endtrans %}
   	{%- elif item.activation == 2 -%}
   	{% trans %}This user is awaiting admin approval.{% endtrans %}