enable set up of new course
[confetti] / courses / new_course.sh
1 #!/bin/zsh
2
3 # Copyright 2014, 2021 Paul Hänsch
4 #
5 # This file is part of Confetti.
6
7 # Confetti is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU Affero General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
11
12 # Confetti is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU Affero General Public License for more details.
16
17 # You should have received a copy of the GNU Affero General Public License
18 # along with Confetti.  If not, see <http://www.gnu.org/licenses/>. 
19
20 locktimeout=900
21 . "$_EXEC"/session_lock.sh
22
23 uid="$(timeid)$(randomid)"  # 32 Octets UID, starting with timestamp
24 course="${uid}.ics"
25
26 tzid="$(cat /etc/timezone)"
27 tstamp="$(TZ="$tzid" date +%Y%m%dT%H%M%S)"
28
29 coursefile="$_DATA/ical/$course"
30
31 if tempfile="$(SLOCK "$coursefile")"; then
32   cat >"$tempfile" <<-EOF
33         BEGIN:VCALENDAR
34         VERSION:2.0
35         PRODID:Berlin RAW Confetti
36         BEGIN:VEVENT
37         UID:$uid
38         DTSTAMP:TZID=${tzid}:${tstamp}
39         DTSTART:
40         DURATION:
41         RRULE:
42         SUMMARY:
43         COMMENT:
44         END:VEVENT
45         END:VCARD
46         EOF
47   REDIRECT "/courses/?e=${course}"
48 else
49   SET_COOKIE session message="EDITLOCK"
50   REDIRECT "/courses/"
51 fi