This repository has been archived on 2026-10-11. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
2024-12-24 15:15:13 +01:00

81 lines
2.9 KiB
Python
Executable File

from icalendar import Calendar, Event, vDatetime, vText, vCalAddress
import datetime
from getcalendar import getcalendar
import pytz
def cal(group: str, args, dir: str, fileName: str):
year = datetime.datetime.now().year
month = datetime.datetime.now().month
day = datetime.datetime.now().day
semester = False
if month < 7:
semester = True
cal = Calendar()
yearDisplay = str(year) + '-' + str(year + 1)
if semester:
yearDisplay = str(year - 1) + '-' + str(year)
cal.add('prodid', 'EDT Université ' + yearDisplay + ' ' + group)
cal.add('version', '2.0')
calendarinfo = getcalendar(group, str(year), semester)
for i in range(len(calendarinfo)):
ignore = False
if calendarinfo[i]["module"] != None:
if calendarinfo[i]["module"][:8] in args:
if args[calendarinfo[i]["module"][:8]] == 0:
ignore = True
if args[calendarinfo[i]["module"][:8]] != '1':
if calendarinfo[i]["room"][-3:] not in args[calendarinfo[i]["module"][:8]]:
ignore = True
if ("showcode" in args and args["showcode"] == '0'):
calendarinfo[i]["module"] = calendarinfo[i]["module"][9:]
else:
calendarinfo[i]["module"] = ""
if not (ignore):
loc = ''
desc = ''
if calendarinfo[i]['notes'] == None:
calendarinfo[i]['notes'] = ""
if calendarinfo[i]["room"] != "":
if "CREMI" in calendarinfo[i]['room']:
loc = 'A28, 33400 Talence, France'
desc = calendarinfo[i]['room'][17:] + '\n' + calendarinfo[i]['notes']
elif '/' in calendarinfo[i]['room']:
slashindex = calendarinfo[i]['room'].find('/')
loc = calendarinfo[i]['room'][:slashindex] + ', 33400 Talence, France'
desc = calendarinfo[i]['room'][slashindex + 1:] + '\n' + calendarinfo[i]['notes']
else:
desc = calendarinfo[i]['notes']
for info in calendarinfo[i]:
if calendarinfo[i][info] == None:
calendarinfo[i][info] = "???"
addevent("[" + calendarinfo[i]["category"] + "] " + calendarinfo[i]["module"], calendarinfo[i]["startint"], calendarinfo[i]["endint"], loc, desc,
cal)
f = open(dir + fileName, 'wb')
f.write(cal.to_ical())
f.close()
def addevent(summary, startint, endint, location, description, cal):
event = Event()
event.add('summary', summary)
event.add(
'dtstart',
datetime.datetime(int(str(startint)[:4]),
int(str(startint)[4:6]),
int(str(startint)[6:8]),
int(str(startint)[8:10]),
int(str(startint)[10:12]),
tzinfo=pytz.timezone('Europe/Paris')))
event.add(
'dtend',
datetime.datetime(int(str(endint)[:4]),
int(str(endint)[4:6]),
int(str(endint)[6:8]),
int(str(endint)[8:10]),
int(str(endint)[10:12]),
tzinfo=pytz.timezone('Europe/Paris')))
event['location'] = vText(location)
event['description'] = vText(description)
cal.add_component(event)