def filter_time(self, queryset, name, value):
"""
Filter to valid parkings at given time stamp.
If there is no valid parkings at given time, but there is a
parking within a day from given time, then return the parking
that has the latest ending time.
:type queryset: parkings.models.ParkingQuerySet
:type name: str
:type value: datetime.datetime
"""
time = value if value else timezone.now()
valid_parkings = queryset.valid_at(time)
if valid_parkings:
return valid_parkings
limit = time - get_time_old_parkings_visible()
valid_within_limit = queryset.starts_before(time).ends_after(limit)
return valid_within_limit.order_by('-time_end')[:1]
评论列表
文章目录