Skip to content

Commit af0ed71

Browse files
committed
Fixing comments - filter_age to utils.py, move values to constants
1 parent 6eedf5c commit af0ed71

2 files changed

Lines changed: 25 additions & 18 deletions

File tree

users/filters.py

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
import datetime
21
from django.contrib.auth import get_user_model
32
from django.db.models import Q
43
from django_filters import rest_framework as filters
54

65
from partner_programs.models import PartnerProgram, PartnerProgramUserProfile
6+
from users.utils import filter_age
77

88
User = get_user_model()
9+
MIN_AGE_VALUE = 0
10+
MAX_AGE_VALUE = 1000
911

1012

1113
class UserFilter(filters.FilterSet):
@@ -44,28 +46,13 @@ def filter_by_partner_program(cls, queryset, name, value):
4446
except PartnerProgram.DoesNotExist:
4547
return User.objects.none()
4648

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-
6249
@classmethod
6350
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)
6552

6653
@classmethod
6754
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)
6956

7057
@classmethod
7158
def filter_by_fullname(cls, queryset, name, value):

users/utils.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from datetime import datetime, timedelta
2+
from django.db.models import Q
3+
4+
5+
def filter_age(queryset, start: int, stop: int):
6+
"""Filters given queryset by age range
7+
8+
Args:
9+
queryset (_type_): Queryset of CustomUser
10+
start (int): start age, included
11+
stop (int): end age range, included
12+
13+
Returns:
14+
Queryset: Filtered queryset of users
15+
"""
16+
start, stop = min(start, stop), max(start, stop)
17+
return queryset.filter(
18+
Q(birthday__gte=datetime.now() - timedelta(days=365.24 * int(stop)))
19+
& Q(birthday__lte=datetime.now() - timedelta(days=365.24 * int(start)))
20+
)

0 commit comments

Comments
 (0)