Skip to content

Instantly share code, notes, and snippets.

@andybak
Created March 28, 2014 18:31
Show Gist options
  • Select an option

  • Save andybak/9839784 to your computer and use it in GitHub Desktop.

Select an option

Save andybak/9839784 to your computer and use it in GitHub Desktop.
class BookingManager(models.Manager):
@property
def _filters(self):
today = datetime.now().date()
tomorrow = today+timedelta(days=1)
day_after_tomorrow = date_today+timedelta(days=2)
this_morning = datetime.combine(date_today, DAY_CUTOFF_TIME)
tomorrow_morning = datetime.combine(tomorrow, DAY_CUTOFF_TIME)
day_after_tomorrow_morning = datetime.combine(day_after_tomorrow, DAY_CUTOFF_TIME)
return {
'depart_today': {'start__gte': this_morning, 'start__lt': tomorrow_morning},
'arrive_today': {'end__gte': this_morning, 'end__lt': tomorrow_morning},
'depart_tomorrow': {'start__gte': tomorrow_morning, 'start__lt': day_after_tomorrow_morning},
'arrive_tomorrow': {'end__gte': self.tomorrow_morning, 'end__lt': self.day_after_tomorrow_morning},
}
@property
def depart_today(self):
return Booking.objects.filter(**self._filters['depart_today'])
@property
def arrive_today(self):
return Booking.objects.filter(**self._filters['arrive_today'])
@property
def depart_tomorrow(self):
return Booking.objects.filter(**self._filters['depart_tomorrow'])
@property
def arrive_tomorrow(self):
return Booking.objects.filter(**self._filters['arrive_tomorrow'])
@property
def arrive_depart_today(self):
return self.depart_today | self.arrive_today
@property
def arrive_depart_tomorrow(self):
return self.depart_tomorrow | self.arrive_tomorrow
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment