12345678910111213141516171819202122232425262728293031323334353637 |
- # 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()
- class UserFilter(django_filters.FilterSet):
- username = django_filters.CharFilter(field_name='username', lookup_expr='icontains')
- 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')
- class Meta:
- model = Department
- fields = ['name',]
|