Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
E
edx-platform-release
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
1
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Package Registry
Operate
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Hsin-Yu Chien
edx-platform-release
Commits
fcd95e2e
Unverified
Commit
fcd95e2e
authored
4 years ago
by
Michael Terry
Committed by
GitHub
4 years ago
Browse files
Options
Downloads
Plain Diff
Merge pull request #23432 from edx/mikix/ics-fixes
Minor fixes to ics for events
parents
97c8c609
23544ccc
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
openedx/features/calendar_sync/ics.py
+8
-8
8 additions, 8 deletions
openedx/features/calendar_sync/ics.py
openedx/features/calendar_sync/tests/test_ics.py
+6
-3
6 additions, 3 deletions
openedx/features/calendar_sync/tests/test_ics.py
with
14 additions
and
11 deletions
openedx/features/calendar_sync/ics.py
+
8
−
8
View file @
fcd95e2e
...
...
@@ -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
)
This diff is collapsed.
Click to expand it.
openedx/features/calendar_sync/tests/test_ics.py
+
6
−
3
View file @
fcd95e2e
...
...
@@ -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
"""
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment