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
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))
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)
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)