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
be7723d4
Commit
be7723d4
authored
Apr 12, 2015
by
Chris Dodge
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add a namespace_scope to return multiple fields
parent
0c740649
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
99 additions
and
5 deletions
+99
-5
common/djangoapps/student/scope_resolver.py
+32
-5
common/djangoapps/student/tests/test_scope_resolver.py
+67
-0
No files found.
common/djangoapps/student/scope_resolver.py
View file @
be7723d4
...
...
@@ -33,7 +33,7 @@ class CourseEnrollmentsScopeResolver(NotificationUserScopeResolver):
The entry point to resolve a scope_name with a given scope_context
"""
if
scope_name
!=
'course_enrollments'
:
if
scope_name
!=
'course_enrollments'
and
scope_name
!=
'namespace_scope'
:
# we can't resolve any other scopes
return
None
...
...
@@ -51,10 +51,37 @@ class CourseEnrollmentsScopeResolver(NotificationUserScopeResolver):
else
:
course_key
=
course_id
return
CourseEnrollment
.
objects
.
values_list
(
'user_id'
,
flat
=
True
)
.
filter
(
is_active
=
1
,
course_id
=
course_key
)
if
scope_name
==
'course_enrollments'
:
return
CourseEnrollment
.
objects
.
values_list
(
'user_id'
,
flat
=
True
)
.
filter
(
is_active
=
1
,
course_id
=
course_key
)
elif
scope_name
==
'namespace_scope'
:
query
=
User
.
objects
.
select_related
(
'courseenrollment'
)
if
'fields'
in
scope_context
:
fields
=
[]
if
scope_context
[
'fields'
]
.
get
(
'id'
):
fields
.
append
(
'id'
)
if
scope_context
[
'fields'
]
.
get
(
'email'
):
fields
.
append
(
'email'
)
if
scope_context
[
'fields'
]
.
get
(
'first_name'
):
fields
.
append
(
'first_name'
)
if
scope_context
[
'fields'
]
.
get
(
'last_name'
):
fields
.
append
(
'last_name'
)
else
:
fields
=
[
'id'
,
'email'
,
'first_name'
,
'last_name'
]
query
=
query
.
values
(
*
fields
)
query
=
query
.
filter
(
courseenrollment__is_active
=
1
,
courseenrollment__course_id
=
course_key
)
return
query
class
StudentEmailScopeResolver
(
NotificationUserScopeResolver
):
...
...
common/djangoapps/student/tests/test_scope_resolver.py
View file @
be7723d4
...
...
@@ -60,6 +60,73 @@ class StudentTasksTestCase(ModuleStoreTestCase):
self
.
assertIsNone
(
resolver
.
resolve
(
'bad'
,
{
'course_id'
:
'foo'
},
None
))
self
.
assertIsNone
(
resolver
.
resolve
(
'course_enrollments'
,
{
'bad'
:
'foo'
},
None
))
def
test_namespace_scope
(
self
):
"""
Make sure that we handle resolving namespaces correctly
"""
test_user_1
=
UserFactory
.
create
(
password
=
'test_pass'
,
email
=
'user1@foo.com'
,
first_name
=
'user'
,
last_name
=
'one'
)
CourseEnrollmentFactory
(
user
=
test_user_1
,
course_id
=
self
.
course
.
id
)
test_user_2
=
UserFactory
.
create
(
password
=
'test_pass'
,
email
=
'user2@foo.com'
,
first_name
=
'John'
,
last_name
=
'Smith'
)
CourseEnrollmentFactory
(
user
=
test_user_2
,
course_id
=
self
.
course
.
id
)
test_user_3
=
UserFactory
.
create
(
password
=
'test_pass'
)
enrollment
=
CourseEnrollmentFactory
(
user
=
test_user_3
,
course_id
=
self
.
course
.
id
)
# unenroll #3
enrollment
.
is_active
=
False
enrollment
.
save
()
resolver
=
CourseEnrollmentsScopeResolver
()
users
=
resolver
.
resolve
(
'namespace_scope'
,
{
'course_id'
:
self
.
course
.
id
,
'fields'
:
{
'id'
:
True
,
'email'
:
True
,
'first_name'
:
True
,
'last_name'
:
True
,
}
},
None
)
_users
=
[
user
for
user
in
users
]
self
.
assertEqual
(
len
(
_users
),
2
)
self
.
assertIn
(
'id'
,
_users
[
0
])
self
.
assertIn
(
'email'
,
_users
[
0
])
self
.
assertIn
(
'first_name'
,
_users
[
0
])
self
.
assertIn
(
'last_name'
,
_users
[
0
])
self
.
assertEquals
(
_users
[
0
][
'id'
],
test_user_1
.
id
)
self
.
assertEquals
(
_users
[
0
][
'email'
],
test_user_1
.
email
)
self
.
assertEquals
(
_users
[
0
][
'first_name'
],
test_user_1
.
first_name
)
self
.
assertEquals
(
_users
[
0
][
'last_name'
],
test_user_1
.
last_name
)
self
.
assertIn
(
'id'
,
_users
[
1
])
self
.
assertIn
(
'email'
,
_users
[
1
])
self
.
assertIn
(
'first_name'
,
_users
[
1
])
self
.
assertIn
(
'last_name'
,
_users
[
1
])
self
.
assertEquals
(
_users
[
1
][
'id'
],
test_user_2
.
id
)
self
.
assertEquals
(
_users
[
1
][
'email'
],
test_user_2
.
email
)
self
.
assertEquals
(
_users
[
1
][
'first_name'
],
test_user_2
.
first_name
)
self
.
assertEquals
(
_users
[
1
][
'last_name'
],
test_user_2
.
last_name
)
def
test_email_resolver
(
self
):
"""
Make sure we can resolve emails
...
...
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