41 lines
1.1 KiB
Python
41 lines
1.1 KiB
Python
from ics import Calendar
|
|
|
|
td_titles = ["TD"]
|
|
td_groups = ["1.1", "1.2"]
|
|
sh_titles = ["ANGLAIS", "ETHIQUE"]
|
|
sh_groups = ["1.1", "1.2", "1.3"]
|
|
|
|
def _filter_group(name: str, titles: list[str], group: str, groups: list[str]) -> bool | None:
|
|
has_group = False
|
|
for title_group in groups:
|
|
if title_group in name:
|
|
has_group = True
|
|
break
|
|
|
|
if not has_group:
|
|
return None
|
|
|
|
for title in titles:
|
|
if title.upper() in name.upper():
|
|
return group == "all" or group in name
|
|
|
|
return None
|
|
|
|
def _filter_event(name: str, td_group: str, sh_group: str) -> bool:
|
|
res = _filter_group(name, td_titles, td_group, td_groups)
|
|
if res is not None:
|
|
return res
|
|
|
|
if _filter_group(name, sh_titles, sh_group, sh_groups) == False:
|
|
return False
|
|
|
|
return True
|
|
|
|
def filter_calendar(calendar: Calendar, td_group: str, sh_group: str) -> Calendar:
|
|
filtered_calendar = Calendar()
|
|
|
|
for event in calendar.events:
|
|
if _filter_event(event.name, td_group, sh_group):
|
|
filtered_calendar.events.add(event)
|
|
|
|
return filtered_calendar |