Skip to content
Snippets Groups Projects
Unverified Commit fcd95e2e authored by Michael Terry's avatar Michael Terry Committed by GitHub
Browse files

Merge pull request #23432 from edx/mikix/ics-fixes

Minor fixes to ics for events
parents 97c8c609 23544ccc
No related merge requests found
......@@ -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('<a href="{url}">Link</a>').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
)
......@@ -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:<a href="{url}">Link</a>
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 """
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment