|
1 | | -import datetime |
2 | 1 | from django.contrib.auth import get_user_model |
3 | 2 | from django.db.models import Q |
4 | 3 | from django_filters import rest_framework as filters |
5 | 4 |
|
6 | 5 | from partner_programs.models import PartnerProgram, PartnerProgramUserProfile |
| 6 | +from users.utils import filter_age |
7 | 7 |
|
8 | 8 | User = get_user_model() |
| 9 | +MIN_AGE_VALUE = 0 |
| 10 | +MAX_AGE_VALUE = 1000 |
9 | 11 |
|
10 | 12 |
|
11 | 13 | class UserFilter(filters.FilterSet): |
@@ -44,28 +46,13 @@ def filter_by_partner_program(cls, queryset, name, value): |
44 | 46 | except PartnerProgram.DoesNotExist: |
45 | 47 | return User.objects.none() |
46 | 48 |
|
47 | | - @classmethod |
48 | | - def filter_age(cls, queryset, start, stop): |
49 | | - # start, stop = map(int, value.split(",")) |
50 | | - start, stop = min(start, stop), max(start, stop) |
51 | | - return queryset.filter( |
52 | | - Q( |
53 | | - birthday__gte=datetime.datetime.now() |
54 | | - - datetime.timedelta(days=365.24 * int(stop)) |
55 | | - ) |
56 | | - & Q( |
57 | | - birthday__lte=datetime.datetime.now() |
58 | | - - datetime.timedelta(days=365.24 * int(start)) |
59 | | - ) |
60 | | - ) |
61 | | - |
62 | 49 | @classmethod |
63 | 50 | def filter_age__gte(cls, queryset, name, value): |
64 | | - return cls.filter_age(queryset, value, 1000) |
| 51 | + return filter_age(queryset, value, MAX_AGE_VALUE) |
65 | 52 |
|
66 | 53 | @classmethod |
67 | 54 | def filter_age__lte(cls, queryset, name, value): |
68 | | - return cls.filter_age(queryset, 0, value) |
| 55 | + return filter_age(queryset, MIN_AGE_VALUE, value) |
69 | 56 |
|
70 | 57 | @classmethod |
71 | 58 | def filter_by_fullname(cls, queryset, name, value): |
|
0 commit comments