def parse_vacations(vacation_lines): vacations = {} stream_lines = vacation_lines.split("\n") lines = stream_lines[2:] # Skip first two header lines vacation_headers = condition.construct_header_map( ["Person", "Start Date", "End Date", "Note"], stream_lines[1]) for l in lines: fields = l.split("\t") name = fields[vacation_headers["Person"]] start = fields[vacation_headers["Start Date"]] end = fields[vacation_headers["End Date"]] note = fields[vacation_headers["Note"]] if not name: continue if name not in vacations: vacations[name] = [] vacations[name].append(parse_vacation_data(name, start, end, note, condition_vacation)) # Expand dates for v in vacations: vacations[v] = expand_dates(vacations[v]) return vacations
def get_date_strings(self, min_date, max_date, start_date, end_date): # Check dates here if end_date.date() < min_date or start_date.date() > max_date: return None # Clamp dates if start_date.date() < min_date: start_date = datetime.datetime(min_date.year, min_date.month, min_date.day) if end_date.date() > max_date: end_date = datetime.datetime(max_date.year, max_date.month, max_date.day) dates = expand_dates([[start_date, end_date]]) result = [date_to_str(d) for d in dates] return result