Browse Source

用户在线查询

liu tao 2 years ago
parent
commit
2bbf28c148
2 changed files with 25 additions and 0 deletions
  1. 13 0
      apps/staff/filters.py
  2. 12 0
      uis/admin/user/index.html

+ 13 - 0
apps/staff/filters.py

@@ -1,7 +1,11 @@
 # coding=utf-8
 import django_filters
 
+import datetime
+from django.utils import timezone
+from django.db.models import Q
 from django.contrib.auth import get_user_model
+
 from .models import Department
 
 User = get_user_model()
@@ -11,11 +15,20 @@ class UserFilter(django_filters.FilterSet):
     name = django_filters.CharFilter(field_name='name', lookup_expr='icontains')
     is_active = django_filters.CharFilter(field_name='is_active')
     department = django_filters.CharFilter(field_name='department_id')
+    online = django_filters.CharFilter(method='online_filter')
 
     class Meta:
         model = User
         fields = ['username', 'name', 'is_active', 'type', ]
 
+    def online_filter(self, queryset, name,value):
+        start = timezone.now() - datetime.timedelta(hours=0, minutes=10, seconds=0)
+        if value == '0':
+            queryset = queryset.filter( Q(status__isnull=True) | Q(status=User.OFFLINE)| Q(last_refresh__lt=start) )
+        elif value == '1':
+            queryset = queryset.filter(status=User.ONLINE, last_refresh__gt=start)
+        return queryset
+
 class DepartmentFilter(django_filters.FilterSet):
     name = django_filters.CharFilter(field_name='name', lookup_expr='icontains')
 

+ 12 - 0
uis/admin/user/index.html

@@ -53,6 +53,18 @@
                     </select>
                 </div>
             </div>
+
+              <div class="layui-col-xs12 layui-col-sm12">
+                <label class="layui-form-label">在线:</label>
+                <div class="layui-input-block">
+                    <select  name="online">
+                        <option value="" selected></option>
+                        <option value="1">是</option>
+                        <option value="0">否</option>
+                    </select>
+                </div>
+            </div>
+
               <div class="layui-col-xs12 layui-col-sm12">
                 <label class="layui-form-label">类型:</label>
                 <div class="layui-input-block">