def for_user(self, user, start, end):
"""Get employments in given time frame for current user.
This includes overlapping employments.
:param User user: The user of the searched employments
:param datetime.date start: start of time frame
:param datetime.date end: end of time frame
:returns: queryset of employments
"""
# end date NULL on database is like employment is ending today
queryset = self.annotate(
end=functions.Coalesce('end_date', models.Value(date.today()))
)
return queryset.filter(
user=user
).exclude(
models.Q(end__lt=start) | models.Q(start_date__gt=end)
)
评论列表
文章目录