Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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