def get_free_periods(self): total_time = Period(self.opening_time, self.closing_time) all_blocked_periods = list( map(lambda a: a.get_period(), self.appointments)) return total_time.subtract(all_blocked_periods)
def get_free_periods_for_date(self, date): weekday = date.weekday() opening_times = self.open_periods[weekday] # todo extend for multiple opening periods opening_time = opening_times[0] open = datetime.combine(date, opening_time.start) close = datetime.combine(date, opening_time.end) total_time = Period(open, close) print(total_time) all_blocked_periods = list( map(lambda a: a.get_period(), self.appointments)) return total_time.subtract(all_blocked_periods)