Example #1
0
def get_events_from_ics(filepath, from_date, to_date):
    """Get events from an ics file
    """
    ics_file = open(filepath, 'r')
    cal = Calendar.from_ical(ics_file.read())
    projects = {}
    for event in cal.walk('vevent'):
        if from_date and to_date:
            if not within(event['DTSTART'].dt, from_date, to_date):
                continue
        name = str(event['SUMMARY']).lower()
        if '-' in name:
            project_name = name.split('-')[0].strip()
        else:
            project_name = name
        event_start = event['DTSTART'].dt
        event_end = event['DTEND'].dt
        project_total = calculate_time(event_start, event_end)
        if project_name in projects:
            new_total = projects[project_name]['total'] + project_total
            projects[project_name]['total'] = new_total
        else:
            projects[project_name] = {}
            projects[project_name]['total'] = project_total
    return projects
Example #2
0
 def test_calculate_time(self):
     start = datetime(2014, 1, 1)
     end = datetime(2014, 2, 1)
     delta = timedelta(days=31)
     value = calculate_time(start, end)
     self.assertEquals(value, delta)