Browse Source

Admin on-line list split to misago.sessions app.

Ralfp 12 years ago
parent
commit
4242067078

+ 5 - 5
misago/admin/layout/overview.py

@@ -39,13 +39,13 @@ ADMIN_ACTIONS=(
                          'id': 'list',
                          'name': _("Browse Users"),
                          'help': _("Browse all registered user accounts"),
-                         'route': 'admin_overview_online'
+                         'route': 'admin_online'
                          },
                         ],
-               route='admin_overview_online', 
-               urlpatterns=patterns('misago.overview.admin.views',
-                        url(r'^$', 'OnlineList', name='admin_overview_online'),
-                        url(r'^(?P<page>\d+)/$', 'OnlineList', name='admin_overview_online'),
+               route='admin_online', 
+               urlpatterns=patterns('misago.sessions.views',
+                        url(r'^$', 'List', name='admin_online'),
+                        url(r'^(?P<page>\d+)/$', 'List', name='admin_online'),
                     ),
                ),
    AdminAction(

+ 1 - 27
misago/overview/admin/forms.py

@@ -25,30 +25,4 @@ class GenerateStatisticsForm(Form):
         provider_choices = kwargs.get('provider_choices')
         del kwargs['provider_choices']
         super(GenerateStatisticsForm, self).__init__(*args, **kwargs)
-        self.fields['provider_model'] = forms.ChoiceField(choices=provider_choices)
-        
-
-class SearchSessionsForm(Form):
-    username = forms.CharField(max_length=255, required=False)
-    ip_address = forms.CharField(max_length=255, required=False)
-    useragent = forms.CharField(max_length=255, required=False)
-    type = forms.ChoiceField(choices=(
-                                      ('all', _("All types")),
-                                      ('registered', _("Registered Members Sessions")),
-                                      ('hidden', _("Hidden Sessions")),
-                                      ('guest', _("Guests Sessions")),
-                                      ('crawler', _("Crawler Sessions")),
-                                      ), required=False)
-    
-    layout = (
-              (
-               _("Search Sessions"),
-               (
-                ('ip_address', {'label': _("IP Address"), 'attrs': {'placeholder': _("IP begins with...")}}),
-                ('username', {'label': _("Username"), 'attrs': {'placeholder': _("Username begings with...")}}),
-                ('useragent', {'label': _("User Agent"), 'attrs': {'placeholder': _("User Agent contains...")}}),
-                ('type', {'label': _("Session Type")}),
-               ),
-              ),
-             )
-    
+        self.fields['provider_model'] = forms.ChoiceField(choices=provider_choices)

+ 2 - 44
misago/overview/admin/views.py

@@ -12,7 +12,7 @@ from misago.admin.widgets import *
 from misago.forms import FormLayout
 from misago.forums.models import Thread, Post
 from misago.messages import Message
-from misago.overview.admin.forms import GenerateStatisticsForm, SearchSessionsForm
+from misago.overview.admin.forms import GenerateStatisticsForm
 from misago.sessions.models import Session
 from misago.users.models import User
 from misago.views import error404
@@ -183,46 +183,4 @@ def build_graph(model, date_start, date_end, precision):
     for i in stat['stat']:
         if i > stat['max']:
             stat['max'] = i
-    return stat
-
-
-class OnlineList(ListWidget):
-    admin = site.get_action('online')
-    id = 'list'
-    columns=(
-             ('owner', _("Session Owner")),
-             ('start', _("Session Start"), 25),
-             ('last', _("Last Click"), 25),
-             )
-    default_sorting = 'start'
-    sortables={
-               'start': 0,
-               'last': 0,
-              }
-    hide_actions = True
-    pagination = 50
-    search_form = SearchSessionsForm
-    empty_message = _('Looks like nobody is currently online on forums.')
-    
-    def set_filters(self, model, filters):
-        if 'username' in filters:
-            model = model.filter(user__username__istartswith=filters['username'])
-        if 'ip_address' in filters:
-            model = model.filter(ip__startswith=filters['ip_address'])
-        if 'useragent' in filters:
-            model = model.filter(agent__icontains=filters['useragent'])
-        if filters['type'] == 'registered':
-            model = model.filter(user__isnull=False)
-        if filters['type'] == 'hidden':
-            model = model.filter(hidden=True)
-        if filters['type'] == 'guest':
-            model = model.filter(user__isnull=True)
-        if filters['type'] == 'crawler':
-            model = model.filter(crawler__isnull=False)
-        return model
-    
-    def prefetch_related(self, items):
-        return items.prefetch_related('user')
-    
-    def select_items(self, items):
-        return items.filter(matched=1).filter(admin=0)
+    return stat

+ 27 - 0
misago/sessions/forms.py

@@ -0,0 +1,27 @@
+from django import forms
+from django.utils.translation import ugettext_lazy as _
+from misago.forms import Form
+
+class SearchSessionsForm(Form):
+    username = forms.CharField(max_length=255, required=False)
+    ip_address = forms.CharField(max_length=255, required=False)
+    useragent = forms.CharField(max_length=255, required=False)
+    type = forms.ChoiceField(choices=(
+                                      ('all', _("All types")),
+                                      ('registered', _("Registered Members Sessions")),
+                                      ('hidden', _("Hidden Sessions")),
+                                      ('guest', _("Guests Sessions")),
+                                      ('crawler', _("Crawler Sessions")),
+                                      ), required=False)
+    
+    layout = (
+              (
+               _("Search Sessions"),
+               (
+                ('ip_address', {'label': _("IP Address"), 'attrs': {'placeholder': _("IP begins with...")}}),
+                ('username', {'label': _("Username"), 'attrs': {'placeholder': _("Username begings with...")}}),
+                ('useragent', {'label': _("User Agent"), 'attrs': {'placeholder': _("User Agent contains...")}}),
+                ('type', {'label': _("Session Type")}),
+               ),
+              ),
+             )

+ 45 - 0
misago/sessions/views.py

@@ -0,0 +1,45 @@
+from django.utils.translation import ugettext as _
+from misago.admin import site
+from misago.admin.widgets import ListWidget
+from misago.sessions.forms import SearchSessionsForm
+
+class List(ListWidget):
+    admin = site.get_action('online')
+    id = 'list'
+    columns=(
+             ('owner', _("Session Owner")),
+             ('start', _("Session Start"), 25),
+             ('last', _("Last Click"), 25),
+             )
+    default_sorting = 'start'
+    sortables={
+               'start': 0,
+               'last': 0,
+              }
+    hide_actions = True
+    pagination = 50
+    search_form = SearchSessionsForm
+    empty_message = _('Looks like nobody is currently online on forums.')
+    
+    def set_filters(self, model, filters):
+        if 'username' in filters:
+            model = model.filter(user__username__istartswith=filters['username'])
+        if 'ip_address' in filters:
+            model = model.filter(ip__startswith=filters['ip_address'])
+        if 'useragent' in filters:
+            model = model.filter(agent__icontains=filters['useragent'])
+        if filters['type'] == 'registered':
+            model = model.filter(user__isnull=False)
+        if filters['type'] == 'hidden':
+            model = model.filter(hidden=True)
+        if filters['type'] == 'guest':
+            model = model.filter(user__isnull=True)
+        if filters['type'] == 'crawler':
+            model = model.filter(crawler__isnull=False)
+        return model
+    
+    def prefetch_related(self, items):
+        return items.prefetch_related('user')
+    
+    def select_items(self, items):
+        return items.filter(matched=1).filter(admin=0)