Skip to content

Commit a7685d8

Browse files
authored
Merge pull request #316#316
Přidání odkazu na iCal
2 parents 65a2ae7 + 28a32ee commit a7685d8

3 files changed

Lines changed: 27 additions & 2 deletions

File tree

naucse/routes.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@
33
import calendar
44

55
from flask import Flask, render_template, url_for, send_from_directory
6-
from flask import abort, redirect
6+
from flask import abort, redirect, Response
77
from jinja2 import StrictUndefined
88
from jinja2.exceptions import TemplateNotFound
99
from werkzeug.local import LocalProxy
1010
from pathlib import Path
11+
import ics
1112

1213
from naucse import models
1314
from naucse.urlconverters import register_url_converters
@@ -325,3 +326,23 @@ def course_calendar(course):
325326
months=list_months(course.start_date,
326327
course.end_date),
327328
calendar=calendar.Calendar())
329+
330+
331+
@app.route('/<course:course>/calendar.ics')
332+
def course_calendar_ics(course):
333+
if not course.start_date:
334+
abort(404)
335+
calendar = ics.Calendar()
336+
for session in course.sessions.values():
337+
combined = datetime.datetime.combine(session.date, datetime.time())
338+
cal_event = ics.Event(
339+
name = session.title,
340+
begin = combined,
341+
uid = url_for("session_coverpage",
342+
course=course,
343+
session=session.slug,
344+
_external=True),
345+
)
346+
cal_event.make_all_day()
347+
calendar.events.append(cal_event)
348+
return Response(str(calendar), mimetype="text/calendar")

naucse/templates/course_calendar.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ <h1>{{ course.title }}</h1>
2828
{% if course.subtitle is defined and course.subtitle != None %}
2929
<h2>{{ course.subtitle }}</h2>
3030
{% endif%}
31-
31+
<div>
32+
Přidej si kurz do svého kalendáře:
33+
<a href="{{ url_for('course_calendar_ics', course=course) }}">iCal</a>
34+
</div>
3235
{% if course.start_date %}
3336
{% for year, month in months %}
3437
<h3 class="calendar-heading">

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ ansi2html
33
elsa>=0.1.3
44
flask
55
frozen-flask
6+
ics
67
ipython
78
jinja2
89
jupyter_client

0 commit comments

Comments
 (0)