Skip to content
Snippets Groups Projects
Commit f9f4d312 authored by marcantoinem's avatar marcantoinem
Browse files

Fix agenda compatibility by ditching reccurence as their implementation is dodgy most of the time

parent 427cf396
No related branches found
No related tags found
No related merge requests found
...@@ -9,7 +9,7 @@ fn main() { ...@@ -9,7 +9,7 @@ fn main() {
let horsage = BufReader::new(File::open("horsage.csv").unwrap()); let horsage = BufReader::new(File::open("horsage.csv").unwrap());
let fermes = BufReader::new(File::open("fermes.csv").unwrap()); let fermes = BufReader::new(File::open("fermes.csv").unwrap());
let courses = Courses::from_csv(horsage, fermes); let courses = Courses::from_csv(horsage, fermes);
let courses_to_take = vec!["INF2705", "LOG2990", "MTH2302D", "SSH3201", "SSH3501D"]; let courses_to_take = vec!["INF2705"];
let mut courses_to_take: Vec<Course> = courses_to_take let mut courses_to_take: Vec<Course> = courses_to_take
.into_iter() .into_iter()
.map(|sigle| courses.get_course(sigle).unwrap()) .map(|sigle| courses.get_course(sigle).unwrap())
......
use chrono::{NaiveDate, NaiveDateTime}; use chrono::NaiveDate;
use icalendar::{Calendar, Component, Event, EventLike}; use icalendar::{Calendar, Component, Event, EventLike};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
...@@ -31,48 +31,31 @@ impl Dates { ...@@ -31,48 +31,31 @@ impl Dates {
}; };
let mut main = Event::new(); let mut main = Event::new();
main.summary(&format!("{} {}", labo, course.sigle)) main.summary(&format!("{} {}", labo, course.sigle))
.description(p.room.as_str()) .description(p.room.as_str())
.location(p.room.as_str()); .location(p.room.as_str());
match self { match self {
Dates::Week(all_dates) => { Dates::Week(all_dates) => {
let session_start = all_dates[0]; for date in all_dates {
let start = session_start let mut event = main.clone();
.and_hms_opt( let start = date
p.hours.starting_hour() as u32, .and_hms_opt(
p.hours.start_minutes() as u32, p.hours.starting_hour() as u32,
0, p.hours.start_minutes() as u32,
) 0,
.unwrap(); )
let end = session_start .unwrap();
.and_hms_opt(p.hours.last_hour() as u32, p.hours.last_minutes() as u32, 0) let end = date
.unwrap(); .and_hms_opt(p.hours.last_hour() as u32, p.hours.last_minutes() as u32, 0)
.unwrap();
main.starts(start).ends(end);
if all_dates.len() > 1 { event
let start_dates: Vec<NaiveDateTime> = all_dates .starts(start)
.into_iter() .ends(end)
.map(|d| { .add_property("CATEGORIES", &course.sigle)
d.and_hms_opt( .add_property("RELATED-TO", &course.sigle);
p.hours.starting_hour() as u32, cal.push(event.done());
p.hours.start_minutes() as u32,
0,
)
.unwrap()
})
.collect();
let mut rdate = start_dates[0].format(NAIVE_DATE_TIME_FORMAT).to_string();
for date in start_dates[1..].iter() {
let date = date.format(NAIVE_DATE_TIME_FORMAT);
rdate.push(',');
rdate.push_str(&date.to_string());
}
main.add_property("RDATE", &rdate);
} }
} }
Dates::Weekend { Dates::Weekend {
...@@ -100,9 +83,8 @@ impl Dates { ...@@ -100,9 +83,8 @@ impl Dates {
let rrule = format!("FREQ=WEEKLY;UNTIL={}", last); let rrule = format!("FREQ=WEEKLY;UNTIL={}", last);
main.starts(start).ends(end).add_property("RRULE", &rrule); main.starts(start).ends(end).add_property("RRULE", &rrule);
cal.push(main.done());
} }
} }
cal.push(main.done());
} }
} }
BEGIN:VCALENDAR
VERSION:2.0
PRODID:ICALENDAR-RS
CALSCALE:GREGORIAN
NAME:horaire
X-WR-CALNAME:horaire
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-1710
DTEND:20240827T113000
DTSTART:20240827T083000
LOCATION:L-1710
RELATED-TO:INF2705
SUMMARY:Théorie INF2705
UID:da8ab001-8a1b-4cb0-9d87-0e9770636ec3
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-1710
DTEND:20240903T113000
DTSTART:20240903T083000
LOCATION:L-1710
RELATED-TO:INF2705
SUMMARY:Théorie INF2705
UID:801e67ee-7a32-4a50-a406-1da91556d624
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-1710
DTEND:20240910T113000
DTSTART:20240910T083000
LOCATION:L-1710
RELATED-TO:INF2705
SUMMARY:Théorie INF2705
UID:3c8d4fec-75e3-4610-a935-8720c117ac47
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-1710
DTEND:20240917T113000
DTSTART:20240917T083000
LOCATION:L-1710
RELATED-TO:INF2705
SUMMARY:Théorie INF2705
UID:5a9dd7d9-c8e6-43a0-aa33-29410b93b4ae
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-1710
DTEND:20240924T113000
DTSTART:20240924T083000
LOCATION:L-1710
RELATED-TO:INF2705
SUMMARY:Théorie INF2705
UID:3a86c023-6501-4125-b8f4-9b609ccc0223
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-1710
DTEND:20241008T113000
DTSTART:20241008T083000
LOCATION:L-1710
RELATED-TO:INF2705
SUMMARY:Théorie INF2705
UID:fcca977d-fc64-4f32-9089-220b90413c76
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-1710
DTEND:20241022T113000
DTSTART:20241022T083000
LOCATION:L-1710
RELATED-TO:INF2705
SUMMARY:Théorie INF2705
UID:de91a14d-61db-4699-8b20-c92a99a8375d
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-1710
DTEND:20241029T113000
DTSTART:20241029T083000
LOCATION:L-1710
RELATED-TO:INF2705
SUMMARY:Théorie INF2705
UID:c0655929-b204-4150-83f6-aff8cfe7cf7a
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-1710
DTEND:20241105T113000
DTSTART:20241105T083000
LOCATION:L-1710
RELATED-TO:INF2705
SUMMARY:Théorie INF2705
UID:cde12b7f-36ce-43a4-82cf-bdf04d219dc5
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-1710
DTEND:20241112T113000
DTSTART:20241112T083000
LOCATION:L-1710
RELATED-TO:INF2705
SUMMARY:Théorie INF2705
UID:8d04f033-f312-4a16-b8e2-868b3b4b528f
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-1710
DTEND:20241119T113000
DTSTART:20241119T083000
LOCATION:L-1710
RELATED-TO:INF2705
SUMMARY:Théorie INF2705
UID:e8102526-5117-4df5-b397-f650c8ecb262
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-1710
DTEND:20241126T113000
DTSTART:20241126T083000
LOCATION:L-1710
RELATED-TO:INF2705
SUMMARY:Théorie INF2705
UID:1fce4ddc-d04b-428d-b355-79de2c322d75
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-1710
DTEND:20241203T113000
DTSTART:20241203T083000
LOCATION:L-1710
RELATED-TO:INF2705
SUMMARY:Théorie INF2705
UID:a99f1356-5ac5-425d-9e81-934520ff0eeb
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-4712
DTEND:20240829T164500
DTSTART:20240829T134500
LOCATION:L-4712
RELATED-TO:INF2705
SUMMARY:Laboratoire INF2705
UID:e844b88e-e135-402c-9595-2e38a49e12b6
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-4712
DTEND:20240905T164500
DTSTART:20240905T134500
LOCATION:L-4712
RELATED-TO:INF2705
SUMMARY:Laboratoire INF2705
UID:8188fb8d-ba5a-4670-a1e7-783cd1dc7088
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-4712
DTEND:20240912T164500
DTSTART:20240912T134500
LOCATION:L-4712
RELATED-TO:INF2705
SUMMARY:Laboratoire INF2705
UID:db8e97ad-fe96-458a-bd3c-6fc2293ef51c
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-4712
DTEND:20240919T164500
DTSTART:20240919T134500
LOCATION:L-4712
RELATED-TO:INF2705
SUMMARY:Laboratoire INF2705
UID:8088c939-fed4-47fe-aa7c-0a9c94b2af3d
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-4712
DTEND:20240926T164500
DTSTART:20240926T134500
LOCATION:L-4712
RELATED-TO:INF2705
SUMMARY:Laboratoire INF2705
UID:4d2eb3f8-8a20-4c2c-b9c6-1719340eff9e
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-4712
DTEND:20241003T164500
DTSTART:20241003T134500
LOCATION:L-4712
RELATED-TO:INF2705
SUMMARY:Laboratoire INF2705
UID:315fdc8e-fda2-432b-bbfc-113b7c9bd047
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-4712
DTEND:20241010T164500
DTSTART:20241010T134500
LOCATION:L-4712
RELATED-TO:INF2705
SUMMARY:Laboratoire INF2705
UID:af72bdc5-aff4-4a58-a8e7-90cfffc5a45e
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-4712
DTEND:20241024T164500
DTSTART:20241024T134500
LOCATION:L-4712
RELATED-TO:INF2705
SUMMARY:Laboratoire INF2705
UID:eec8c638-fbf2-4003-b1cd-2d73c7ea2376
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-4712
DTEND:20241031T164500
DTSTART:20241031T134500
LOCATION:L-4712
RELATED-TO:INF2705
SUMMARY:Laboratoire INF2705
UID:00659c44-be66-4560-aaf9-4652f8506e98
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-4712
DTEND:20241107T164500
DTSTART:20241107T134500
LOCATION:L-4712
RELATED-TO:INF2705
SUMMARY:Laboratoire INF2705
UID:07cfe40b-9970-407d-8220-2b6037d44bcf
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-4712
DTEND:20241114T164500
DTSTART:20241114T134500
LOCATION:L-4712
RELATED-TO:INF2705
SUMMARY:Laboratoire INF2705
UID:c488af8e-e2da-4fbf-b798-28346306cdf8
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-4712
DTEND:20241121T164500
DTSTART:20241121T134500
LOCATION:L-4712
RELATED-TO:INF2705
SUMMARY:Laboratoire INF2705
UID:cca84986-085f-4570-aaef-1772d91d9c5f
END:VEVENT
BEGIN:VEVENT
DTSTAMP:20240826T025202Z
CATEGORIES:INF2705
DESCRIPTION:L-4712
DTEND:20241128T164500
DTSTART:20241128T134500
LOCATION:L-4712
RELATED-TO:INF2705
SUMMARY:Laboratoire INF2705
UID:cc64cebb-21c7-46f3-8974-33c10f318952
END:VEVENT
END:VCALENDAR
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment