def period_stats(periods): if len(periods) < 1: return range(8, 20), DAYS[:5] min_time, max_time, dow_used = None, None, set() for period in periods: min_time = min(min_time or period.start, period.start) max_time = max(max_time or period.end, period.end) dow_used = dow_used.union(period.days_of_week) timerange = range(min_time.hour - 1, max_time.hour + 2) return list(timerange), sorted_daysofweek(dow_used)
def period_stats(self, periods): """Returns various statistics of the period objects provided.. Currently only gives the minimum period time, maximium period time, and the days of the week all periods have. """ if len(periods) < 1: return range(8, 20), DAYS[:5] min_time, max_time, dow_used = None, None, set() for period in periods: min_time = min(min_time or period.start, period.start) max_time = max(max_time or period.end, period.end) dow_used = dow_used.union(period.days_of_week) timerange = range(min_time.hour - 1, max_time.hour + 2) return timerange, sorted_daysofweek(dow_used)
def days_of_week(self): dows = set() for period in self.get_periods(): dows.update(period.days_of_week) return sorted_daysofweek(dows)