Esempio n. 1
0
def create_calendar(token, enrollment_id, options):
    file_list = []
    if options['academicCal'] or options['careerCal']:
        academic_calendar = Calendar()
        career_calendar = Calendar()
        for sess in get_sessions(token, enrollment_id)['calendarSessions']:
            e = Event()
            if (sess['context']['id'] == 1) and options['academicCal']:
                start_time = datetime.strptime(sess['session']['startTime'], '%Y-%m-%dT%H:%M:%SZ')
                end_time = datetime.strptime(sess['session']['endTime'], '%Y-%m-%dT%H:%M:%SZ')
                e.name = str(sess['session']['chapter']) + ': ' + sess['session']['name']
                e.transparent = True if options['academicIsTrans'] else False
                if options['officeHours']:
                    e.begin = start_time - timedelta(minutes=45)
                    e.end = end_time + timedelta(minutes=30)
                else:
                    e.begin = start_time
                    e.end = end_time
                academic_calendar.events.add(e)

            elif (sess['context']['id'] == 2) and options['careerCal']:
                e.name = sess['session']['name']
                e.begin = sess['session']['startTime']
                e.end = sess['session']['endTime']
                e.transparent = True if options['careerIsTrans'] else False
                career_calendar.events.add(e)

        if len(academic_calendar.events) > 0:
            academic_file_name = str(enrollment_id) + '-academic-calendar'
            academic_file_name = academic_file_name + '-oh.ics' if options['officeHours'] else academic_file_name + '.ics'
            file_list.append(academic_file_name)
            with open('files/' + academic_file_name, 'w') as f:
                f.writelines(academic_calendar)

        if len(career_calendar.events) > 0:
            career_file_name = str(enrollment_id) + '-career-calendar.ics'
            file_list.append(career_file_name)
            with open('files/' + career_file_name, 'w') as f:
                f.writelines(career_calendar)

    if options['assignmentCal']:
        assignment_calendar = Calendar()
        for assignment in get_assignments(token, enrollment_id)['calendarAssignments']:
            e = Event()
            if assignment['context']['id'] == 1:
                e.name = assignment['title']
                e.begin = datetime.strptime(assignment['effectiveDueDate'], '%Y-%m-%dT%H:%M:%SZ') - timedelta(days=1)
                e.end = datetime.strptime(assignment['effectiveDueDate'], '%Y-%m-%dT%H:%M:%SZ') - timedelta(days=1)
                e.make_all_day()
                e.transparent = True if options['assignmentsIsTrans'] else False
                assignment_calendar.events.add(e)
        assignment_file_name = str(enrollment_id) + '-assignment-calendar.ics'
        file_list.append(assignment_file_name)
        with open('files/' + assignment_file_name, 'w') as f:
            f.writelines(assignment_calendar)

    return file_list
Esempio n. 2
0
def create_ics(cal):
    for cal_type in cal:
        c = Calendar()
        for date in cal[cal_type]:
            e = Event()
            date_obj = datetime.strptime(date, '%Y-%m-%dT%H:%M:%S')
            e.begin = date_obj
            e.name = "Solid Waste Pickup"
            e.description = cal[cal_type][date]
            e.transparent = True
            e.make_all_day()
            c.events.add(e)
        filename = cal_type + "_" + date_obj.strftime("%Y") + ".ics"
        print("Creating ICS for", cal_type, "Filename:", filename)
        with open(filename, 'w') as f:
            f.write(str(c))
Esempio n. 3
0
    def saveAllEvents(self):
        print(
            f"\n-----------------\n{bcolors.OKCYAN}Saving all events to ics file...{bcolors.ENDC}")
        cal = Calendar()
        for element in self.g_json:
            e = Event()
            fromOffset = pytz.timezone(
                    'Europe/Paris').localize(datetime.strptime(element['start']["dateTime"], '%Y-%m-%dT%H:%M:%S')).strftime('%z')
            toOffset = pytz.timezone(
                    'Europe/Paris').localize(datetime.strptime(element['end']["dateTime"], '%Y-%m-%dT%H:%M:%S')).strftime('%z')
            e.name = element['summary']
            e.begin = element['start']["dateTime"] + str(fromOffset)
            e.end = element['end']["dateTime"] + str(toOffset)
            e.transparent = element['transparency']

            try:
                e.location = element["location"]
                e.description = element['description']

            except:
                e.location = ""
                e.description = ""

            cal.events.add(e)
        if(self.future>0):
            bd = (datetime.now() + timedelta(weeks=self.future)).isocalendar()
        else:
            bd = datetime.now().isocalendar()

        base_week = bd[1]
        year = bd[0]
        RESULTSICS_PATH2 = RESULTSICS_PATH.split(
            ".ics")[0] + f"{year}_W{base_week}.ics"
        #print(repr(str(cal).replace('DTSTART', 'DTSTART;TZID=Europe/Paris').replace('DTEND', 'DTEND;TZID=Europe/Paris')))
        with open(RESULTSICS_PATH2, 'w') as f:
            f.write(str(cal).replace('DTSTART', 'DTSTART;TZID=Europe/Paris').replace('DTEND', 'DTEND;TZID=Europe/Paris'))
        
        print(
            f"{bcolors.OKGREEN}\nAll events have been saved to ics!{bcolors.ENDC}")
from datetime import date, timedelta
from ics import Calendar, Event

sites = ["Bath", "Bristol", "Cardiff", "Exeter"]
offset = 0  # start with Bath
start_date = date(2022, 2, 7)
weeks_to_schedule = 12

# format = "%Y-%m-%d 00:00:00"
num_sites = len(sites)
working_week = 4  # number of days between Monday and Friday
calendar_week_len = 7

calendar = Calendar()
for week in range(weeks_to_schedule):
    monday = start_date + timedelta(days=(week * 7))
    friday = monday + timedelta(days=working_week)
    site = sites[(week + offset) % num_sites]
    turn = Event()
    turn.name = f"{site} doing RT ticket dispatching"
    turn.begin = monday.strftime("%Y-%m-%d 00:00:00")
    turn.end = friday.strftime("%Y-%m-%d 23:59:59")
    turn.make_all_day()
    turn.transparent = True
    calendar.events.add(turn)

with open("rt-rota.ics", "w") as f:
    f.writelines(calendar)
Esempio n. 5
0
    name, fp1, fp2, fp3, q, r = s.split(',')
    schedule[name] = [fp1, fp2, fp3, q, r]

for race in races:
    event = Event()
    today = datetime.datetime.now()
    gp, circuit, coords, name = race.split(',')
    if gp != 'JAPAN':
        dates = get_dates(gp)

        event.name = f'{name} Grand Prix'
        event.begin = dates['R']
        # event.end = ''
        event.location = circuit
        event.geo = [float(i) for i in coords.split()]
        event.transparent = False
        event.created = today
        event.last_modified = today
        event.extra.extend([ContentLine(name='SEQUENCE', value='0')])
    else:
        event.name = f'{name} Grand Prix'
        event.begin = '2020-10-11 00:00:00'
        # event.end = ''
        event.location = circuit
        event.geo = [float(i) for i in coords.split()]
        event.transparent = False
        event.created = today
        event.last_modified = today
        event.extra.extend([ContentLine(name='SEQUENCE', value='0')])

    calendar.events.add(event)