Skip to content

Commit ed91150

Browse files
jaap3berkerpeksag
authored andcommitted
Simplify JobQueySet (#1344)
* Remove redundant exact lookups. 'exact' is the default lookup type. * Remove unnecessary Q objects. Filters are 'and' by default. * Simplify active lookup by reusing the approved method. * Use exclude() instead of negated Q.
1 parent 3dab1de commit ed91150

File tree

1 file changed

+12
-19
lines changed

1 file changed

+12
-19
lines changed

jobs/managers.py

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import datetime
22

3-
from django.db.models import Q
43
from django.db.models.query import QuerySet
54
from django.utils import timezone
65

@@ -37,51 +36,45 @@ def with_active_jobs(self):
3736
class JobQuerySet(QuerySet):
3837

3938
def approved(self):
40-
return self.filter(status__exact=self.model.STATUS_APPROVED)
39+
return self.filter(status=self.model.STATUS_APPROVED)
4140

4241
def archived(self):
43-
return self.filter(status__exact=self.model.STATUS_ARCHIVED)
42+
return self.filter(status=self.model.STATUS_ARCHIVED)
4443

4544
def draft(self):
46-
return self.filter(status__exact=self.model.STATUS_DRAFT)
45+
return self.filter(status=self.model.STATUS_DRAFT)
4746

4847
def expired(self):
49-
return self.filter(status__exact=self.model.STATUS_EXPIRED)
48+
return self.filter(status=self.model.STATUS_EXPIRED)
5049

5150
def rejected(self):
52-
return self.filter(status__exact=self.model.STATUS_REJECTED)
51+
return self.filter(status=self.model.STATUS_REJECTED)
5352

5453
def removed(self):
55-
return self.filter(status__exact=self.model.STATUS_REMOVED)
54+
return self.filter(status=self.model.STATUS_REMOVED)
5655

5756
def featured(self):
5857
return self.filter(is_featured=True)
5958

6059
def editable(self):
61-
return self.exclude(status__exact=self.model.STATUS_APPROVED)
60+
return self.exclude(status=self.model.STATUS_APPROVED)
6261

6362
def review(self):
6463
review_threshold = timezone.now() - datetime.timedelta(days=120)
6564
return self.filter(
66-
Q(status__exact=self.model.STATUS_REVIEW) &
67-
Q(created__gte=review_threshold)
65+
status=self.model.STATUS_REVIEW,
66+
created__gte=review_threshold,
6867
).order_by('created')
6968

7069
def moderate(self):
71-
return self.filter(
72-
~Q(status__exact=self.model.STATUS_REVIEW)
73-
)
70+
return self.exclude(status=self.model.STATUS_REVIEW)
7471

7572
def visible(self):
7673
"""
7774
Jobs that should be publicly visible on the website. They will have an
7875
approved status and be less than 90 days old
7976
"""
80-
now = timezone.now()
81-
return self.filter(
82-
Q(status__exact=self.model.STATUS_APPROVED) &
83-
Q(expires__gte=now)
84-
)
77+
return self.approved().filter(expires__gte=timezone.now())
8578

8679
def by(self, user):
87-
return self.filter(Q(creator=user))
80+
return self.filter(creator=user)

0 commit comments

Comments
 (0)