-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathfilters.py
More file actions
40 lines (31 loc) · 1.27 KB
/
filters.py
File metadata and controls
40 lines (31 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from django.db.models import Q
from django_filters import rest_framework as filters
from ohq.models import CourseStatistic, Question, QueueStatistic
class QuestionSearchFilter(filters.FilterSet):
# time_asked = filters.DateFilter(lookup_expr="icontains")
search = filters.CharFilter(method="search_filter")
order_by = filters.OrderingFilter(fields=["time_asked", "time_responded_to"])
class Meta:
model = Question
fields = {
"time_asked": ["gt", "lt"],
"queue": ["exact"],
"status": ["exact"],
"time_responded_to": ["gt", "lt"],
}
def search_filter(self, queryset, name, value):
return queryset.filter(
Q(text__icontains=value)
| Q(asked_by__first_name__icontains=value)
| Q(asked_by__last_name__icontains=value)
| Q(responded_to_by__first_name__icontains=value)
| Q(responded_to_by__last_name__icontains=value)
)
class CourseStatisticFilter(filters.FilterSet):
class Meta:
model = CourseStatistic
fields = ["metric", "date"]
class QueueStatisticFilter(filters.FilterSet):
class Meta:
model = QueueStatistic
fields = {"metric": ["exact"], "date": ["gt", "lt", "gte", "lte", "exact"]}