Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
5ab2a90d
Commit
5ab2a90d
authored
Oct 03, 2014
by
Greg Price
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #5489 from edx/gprice/notifier-api-bogus-enrollment
Make notifier API resilient to bad enrollments
parents
62b840c5
cff8e16d
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
24 additions
and
10 deletions
+24
-10
lms/djangoapps/notifier_api/serializers.py
+15
-10
lms/djangoapps/notifier_api/tests.py
+9
-0
No files found.
lms/djangoapps/notifier_api/serializers.py
View file @
5ab2a90d
from
django.contrib.auth.models
import
User
from
django.http
import
Http404
from
rest_framework
import
serializers
from
course_groups.cohorts
import
is_course_cohorted
...
...
@@ -47,16 +48,20 @@ class NotifierUserSerializer(serializers.ModelSerializer):
for
role
in
user
.
roles
.
all
()
for
perm
in
role
.
permissions
.
all
()
if
perm
.
name
==
"see_all_cohorts"
}
return
{
unicode
(
enrollment
.
course_id
):
{
"cohort_id"
:
cohort_id_map
.
get
(
enrollment
.
course_id
),
"see_all_cohorts"
:
(
enrollment
.
course_id
in
see_all_cohorts_set
or
not
is_course_cohorted
(
enrollment
.
course_id
)
),
}
for
enrollment
in
user
.
courseenrollment_set
.
all
()
if
enrollment
.
is_active
}
ret
=
{}
for
enrollment
in
user
.
courseenrollment_set
.
all
():
if
enrollment
.
is_active
:
try
:
ret
[
unicode
(
enrollment
.
course_id
)]
=
{
"cohort_id"
:
cohort_id_map
.
get
(
enrollment
.
course_id
),
"see_all_cohorts"
:
(
enrollment
.
course_id
in
see_all_cohorts_set
or
not
is_course_cohorted
(
enrollment
.
course_id
)
),
}
except
Http404
:
# is_course_cohorted raises this if course does not exist
pass
return
ret
class
Meta
:
model
=
User
...
...
lms/djangoapps/notifier_api/tests.py
View file @
5ab2a90d
...
...
@@ -10,6 +10,7 @@ from django_comment_common.models import Role, Permission
from
lang_pref
import
LANGUAGE_KEY
from
notification_prefs
import
NOTIFICATION_PREF_KEY
from
notifier_api.views
import
NotifierUsersViewSet
from
opaque_keys.edx.locator
import
CourseLocator
from
student.models
import
CourseEnrollment
from
student.tests.factories
import
UserFactory
,
CourseEnrollmentFactory
from
user_api.models
import
UserPreference
...
...
@@ -120,6 +121,14 @@ class NotifierUsersViewSetTest(UrlResetMixin, ModuleStoreTestCase):
result
=
self
.
_get_detail
()
self
.
assertEqual
(
result
[
"course_info"
],
{})
def
test_course_info_non_existent_course_enrollment
(
self
):
CourseEnrollmentFactory
(
user
=
self
.
user
,
course_id
=
CourseLocator
(
org
=
"dummy"
,
course
=
"dummy"
,
run
=
"non_existent"
)
)
result
=
self
.
_get_detail
()
self
.
assertEqual
(
result
[
"course_info"
],
{})
def
test_preferences
(
self
):
lang_pref
=
UserPreferenceFactory
(
user
=
self
.
user
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment