def renderCells(self, schedule, day, item): if sameProxiedObjects(schedule, self.context.periods): period = item return (period.title, self.activityTitle(period.activity_type) or '') if sameProxiedObjects(schedule, self.context.time_slots): slot = item return (format_time_range(slot.tstart, slot.duration), self.activityTitle(slot.activity_type) or '') return None
def format_time_slots(self, time_slots, ws, offset): self.write_header(ws, offset, 0, "Time schedule") offset += 1 for day in time_slots.templates.values(): self.write(ws, offset, 0, day.title) for col, slot in enumerate(day.values()): time = format_time_range(slot.tstart, slot.duration) self.write(ws, offset, col + 1, time) self.write(ws, offset + 1, col + 1, slot.activity_type) offset += 2 return offset
def default_period_names(time_slots): """Derive period names and order from time slots. >>> from datetime import time, timedelta >>> periods = [(time(9, 0), timedelta(minutes=50)), ... (time(12, 35), timedelta(minutes=50)), ... (time(14, 15), timedelta(minutes=55))] >>> periods2 = [(time(9, 10), timedelta(minutes=50)), ... (time(12, 35), timedelta(minutes=50))] >>> default_period_names([periods] * 3 + [periods2]) [['09:00-09:50', '12:35-13:25', '14:15-15:10'], ['09:00-09:50', '12:35-13:25', '14:15-15:10'], ['09:00-09:50', '12:35-13:25', '14:15-15:10'], ['09:10-10:00', '12:35-13:25']] """ return [[ format_time_range(tstart, duration) for tstart, duration in slots ] for slots in time_slots]
def default_period_names(time_slots): """Derive period names and order from time slots. >>> from datetime import time, timedelta >>> periods = [(time(9, 0), timedelta(minutes=50)), ... (time(12, 35), timedelta(minutes=50)), ... (time(14, 15), timedelta(minutes=55))] >>> periods2 = [(time(9, 10), timedelta(minutes=50)), ... (time(12, 35), timedelta(minutes=50))] >>> default_period_names([periods] * 3 + [periods2]) [['09:00-09:50', '12:35-13:25', '14:15-15:10'], ['09:00-09:50', '12:35-13:25', '14:15-15:10'], ['09:00-09:50', '12:35-13:25', '14:15-15:10'], ['09:10-10:00', '12:35-13:25']] """ return [[format_time_range(tstart, duration) for tstart, duration in slots] for slots in time_slots]
def renderCells(self, schedule, day, item): timetable = self.context.timetable if sameProxiedObjects(schedule, timetable.periods): checked = self.context.hasPeriod(item) key = self.getPeriodKey(day, item) checkbox = """ <input class="activity" type="checkbox" id="%(key)s" name="%(key)s" value="%(key)s"%(checked)s></input>""" % { 'key': key, 'checked': checked and ' checked="checked"' or ''} label = """ <label class="period" for="%(key)s">%(title)s</label>""" % { 'key': key, 'title': item.title or ''} return (checkbox, label) if sameProxiedObjects(schedule, timetable.time_slots): slot = item return (format_time_range(slot.tstart, slot.duration), self.activityTitle(slot.activity_type) or '') return None
def format_time_range_list(times): r"""Format a multi-line string from a list of time slots. One slot per line (HH:MM - HH:MM). Empty lines are ignored. Extra spaces are stripped. >>> import datetime >>> times = [(datetime.time(9, 30), datetime.timedelta(0, 3300)), ... (datetime.time(12, 30), datetime.timedelta(0, 3300))] >>> print format_time_range_list(times) 09:30-10:25 12:30-13:25 """ lines = [] for tr_time, tr_delta in times: lines.append(format_time_range(tr_time, tr_delta)) return '\n'.join(lines)