|
@@ -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')
|
|
|
|