diff --git a/openedx/features/calendar_sync/ics.py b/openedx/features/calendar_sync/ics.py
index d36078181c..706b092768 100644
--- a/openedx/features/calendar_sync/ics.py
+++ b/openedx/features/calendar_sync/ics.py
@@ -4,6 +4,7 @@ from datetime import datetime, timedelta
import pytz
from django.conf import settings
+from django.utils.translation import gettext as _
from icalendar import Calendar, Event, vCalAddress, vText
from lms.djangoapps.courseware.courses import get_course_assignments
@@ -13,7 +14,7 @@ from openedx.core.djangolib.markup import HTML
from . import get_calendar_event_id
-def generate_ics_for_event(uid, summary, url, now, start, organizer_name, organizer_email):
+def generate_ics_for_event(uid, title, course_name, now, start, organizer_name, organizer_email):
"""
Generates an ics-formatted bytestring for the given assignment information.
@@ -30,9 +31,8 @@ def generate_ics_for_event(uid, summary, url, now, start, organizer_name, organi
event.add('uid', uid)
event.add('dtstamp', now)
event.add('organizer', organizer, encode=0)
- event.add('summary', summary)
- # FIXME description should be translated if we use hardcoded text, once we finalize that text
- event.add('description', HTML('Link').format(url=url))
+ event.add('summary', title)
+ event.add('description', HTML(_('{assignment} is due for {course}.')).format(assignment=title, course=course_name))
event.add('dtstart', start)
event.add('duration', timedelta(0))
event.add('transp', 'TRANSPARENT') # available, rather than busy
@@ -46,7 +46,7 @@ def generate_ics_for_event(uid, summary, url, now, start, organizer_name, organi
return cal.to_ical()
-def generate_ics_for_user_course(course_key, user, request):
+def generate_ics_for_user_course(course, user, request):
"""
Generates ics-formatted bytestrings of all assignments for a given course and user.
@@ -54,7 +54,7 @@ def generate_ics_for_user_course(course_key, user, request):
Returns an iterable of ics files, each one representing an assignment.
"""
- assignments = get_course_assignments(course_key, user, request)
+ assignments = get_course_assignments(course.id, user, request)
platform_name = get_value('platform_name', settings.PLATFORM_NAME)
platform_email = get_value('email_from_address', settings.DEFAULT_FROM_EMAIL)
now = datetime.now(pytz.utc)
@@ -65,9 +65,9 @@ def generate_ics_for_user_course(course_key, user, request):
organizer_name=platform_name,
organizer_email=platform_email,
start=assignment.date,
- summary=assignment.title,
+ title=assignment.title,
+ course_name=course.display_name_with_default,
uid=get_calendar_event_id(user, str(assignment.block_key), 'due', request.site.domain),
- url=assignment.url,
)
for assignment in assignments
)
diff --git a/openedx/features/calendar_sync/tests/test_ics.py b/openedx/features/calendar_sync/tests/test_ics.py
index 9d70b38ea2..8fa356fba2 100644
--- a/openedx/features/calendar_sync/tests/test_ics.py
+++ b/openedx/features/calendar_sync/tests/test_ics.py
@@ -8,6 +8,7 @@ from freezegun import freeze_time
from mock import patch
from lms.djangoapps.courseware.courses import _Assignment
+from openedx.core.djangoapps.content.course_overviews.tests.factories import CourseOverviewFactory
from openedx.core.djangoapps.site_configuration.tests.factories import SiteFactory
from openedx.features.calendar_sync import get_calendar_event_id
from openedx.features.calendar_sync.ics import generate_ics_for_user_course
@@ -23,6 +24,8 @@ class TestIcsGeneration(TestCase):
self.addCleanup(freezer.stop)
freezer.start()
+ self.course = CourseOverviewFactory()
+
self.user = UserFactory()
self.request = RequestFactory().request()
self.request.site = SiteFactory()
@@ -44,7 +47,7 @@ DTSTART;VALUE=DATE-TIME:{timedue}
DURATION:P0D
DTSTAMP;VALUE=DATE-TIME:20131003T082455Z
UID:{uid}
-DESCRIPTION:Link
+DESCRIPTION:{summary} is due for {course}.
ORGANIZER;CN=édX:mailto:registration@example.com
TRANSP:TRANSPARENT
END:VEVENT
@@ -53,8 +56,8 @@ END:VCALENDAR
return (
template.format(
summary=assignment.title,
+ course=self.course.display_name_with_default,
timedue=assignment.date.strftime('%Y%m%dT%H%M%SZ'),
- url=assignment.url,
uid=get_calendar_event_id(self.user, str(assignment.block_key), 'due', self.request.site.domain),
)
for assignment in assignments
@@ -64,7 +67,7 @@ END:VCALENDAR
""" Uses generate_ics_for_user_course to create ics files for the given assignments """
with patch('openedx.features.calendar_sync.ics.get_course_assignments') as mock_get_assignments:
mock_get_assignments.return_value = assignments
- return generate_ics_for_user_course('a/b/c', self.user, self.request)
+ return generate_ics_for_user_course(self.course, self.user, self.request)
def assert_ics(self, *assignments):
""" Asserts that the generated and expected ics for the given assignments are equal """