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
cad10c23
Commit
cad10c23
authored
Jul 29, 2016
by
wajeeha-khalid
Committed by
GitHub
Jul 29, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #13119 from edx/jia/MA-2646
MA-2646: handle profile_image in requested_fields for anonymous user
parents
3a65ca02
551fd7ee
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
64 deletions
+53
-64
lms/djangoapps/discussion_api/api.py
+4
-2
lms/djangoapps/discussion_api/tests/test_views.py
+49
-62
No files found.
lms/djangoapps/discussion_api/api.py
View file @
cad10c23
...
...
@@ -375,7 +375,9 @@ def _get_users(discussion_entity_type, discussion_entity, username_profile_dict)
A dict of users with username as key and user profile details as value.
"""
users
=
{
discussion_entity
[
'author'
]:
_user_profile
(
username_profile_dict
[
discussion_entity
[
'author'
]])}
users
=
{}
if
discussion_entity
[
'author'
]:
users
[
discussion_entity
[
'author'
]]
=
_user_profile
(
username_profile_dict
[
discussion_entity
[
'author'
]])
if
discussion_entity_type
==
DiscussionEntity
.
comment
and
discussion_entity
[
'endorsed'
]:
users
[
discussion_entity
[
'endorsed_by'
]]
=
_user_profile
(
username_profile_dict
[
discussion_entity
[
'endorsed_by'
]])
...
...
@@ -446,7 +448,7 @@ def _serialize_discussion_entities(request, context, discussion_entities, reques
results
.
append
(
serialized_entity
)
if
include_profile_image
:
if
serialized_entity
[
'author'
]
not
in
usernames
:
if
serialized_entity
[
'author'
]
and
serialized_entity
[
'author'
]
not
in
usernames
:
usernames
.
append
(
serialized_entity
[
'author'
])
if
(
'endorsed'
in
serialized_entity
and
serialized_entity
[
'endorsed'
]
and
...
...
lms/djangoapps/discussion_api/tests/test_views.py
View file @
cad10c23
...
...
@@ -354,6 +354,28 @@ class ThreadViewSetListTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase, Pro
thread
.
update
(
overrides
or
{})
return
thread
def
create_source_thread
(
self
,
overrides
=
None
):
"""
Create a sample source cs_thread
"""
thread
=
make_minimal_cs_thread
({
"id"
:
"test_thread"
,
"course_id"
:
unicode
(
self
.
course
.
id
),
"commentable_id"
:
"test_topic"
,
"user_id"
:
str
(
self
.
user
.
id
),
"username"
:
self
.
user
.
username
,
"created_at"
:
"2015-04-28T00:00:00Z"
,
"updated_at"
:
"2015-04-28T11:11:11Z"
,
"title"
:
"Test Title"
,
"body"
:
"Test body"
,
"votes"
:
{
"up_count"
:
4
},
"comments_count"
:
5
,
"unread_comments_count"
:
3
,
})
thread
.
update
(
overrides
or
{})
return
thread
def
test_course_id_missing
(
self
):
response
=
self
.
client
.
get
(
self
.
url
)
self
.
assert_response_correct
(
...
...
@@ -372,20 +394,9 @@ class ThreadViewSetListTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase, Pro
def
test_basic
(
self
):
self
.
register_get_user_response
(
self
.
user
,
upvoted_ids
=
[
"test_thread"
])
source_threads
=
[
make_minimal_cs_thread
({
"id"
:
"test_thread"
,
"course_id"
:
unicode
(
self
.
course
.
id
),
"commentable_id"
:
"test_topic"
,
"user_id"
:
str
(
self
.
author
.
id
),
"username"
:
self
.
author
.
username
,
"created_at"
:
"2015-04-28T00:00:00Z"
,
"updated_at"
:
"2015-04-28T11:11:11Z"
,
"title"
:
"Test Title"
,
"body"
:
"Test body"
,
"votes"
:
{
"up_count"
:
4
},
"comments_count"
:
5
,
"unread_comments_count"
:
3
,
})]
source_threads
=
[
self
.
create_source_thread
({
"user_id"
:
str
(
self
.
author
.
id
),
"username"
:
self
.
author
.
username
})
]
expected_threads
=
[
self
.
make_expected_thread
({
"created_at"
:
"2015-04-28T00:00:00Z"
,
"updated_at"
:
"2015-04-28T11:11:11Z"
,
...
...
@@ -640,54 +651,8 @@ class ThreadViewSetListTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase, Pro
user_2
.
profile
.
year_of_birth
=
1970
user_2
.
profile
.
save
()
source_threads
=
[
{
"type"
:
"thread"
,
"id"
:
"test_thread"
,
"course_id"
:
unicode
(
self
.
course
.
id
),
"commentable_id"
:
"test_topic"
,
"group_id"
:
None
,
"user_id"
:
str
(
self
.
user
.
id
),
"username"
:
self
.
user
.
username
,
"anonymous"
:
False
,
"anonymous_to_peers"
:
False
,
"created_at"
:
"2015-04-28T00:00:00Z"
,
"updated_at"
:
"2015-04-28T11:11:11Z"
,
"thread_type"
:
"discussion"
,
"title"
:
"Test Title"
,
"body"
:
"Test body"
,
"pinned"
:
False
,
"closed"
:
False
,
"abuse_flaggers"
:
[],
"votes"
:
{
"up_count"
:
4
},
"comments_count"
:
5
,
"unread_comments_count"
:
3
,
"read"
:
False
,
"endorsed"
:
False
},
{
"type"
:
"thread"
,
"id"
:
"test_thread"
,
"course_id"
:
unicode
(
self
.
course
.
id
),
"commentable_id"
:
"test_topic"
,
"group_id"
:
None
,
"user_id"
:
str
(
user_2
.
id
),
"username"
:
user_2
.
username
,
"anonymous"
:
False
,
"anonymous_to_peers"
:
False
,
"created_at"
:
"2015-04-28T00:00:00Z"
,
"updated_at"
:
"2015-04-28T11:11:11Z"
,
"thread_type"
:
"discussion"
,
"title"
:
"Test Title"
,
"body"
:
"Test body"
,
"pinned"
:
False
,
"closed"
:
False
,
"abuse_flaggers"
:
[],
"votes"
:
{
"up_count"
:
4
},
"comments_count"
:
5
,
"unread_comments_count"
:
3
,
"read"
:
False
,
"endorsed"
:
False
}
self
.
create_source_thread
(),
self
.
create_source_thread
({
"user_id"
:
str
(
user_2
.
id
),
"username"
:
user_2
.
username
}),
]
self
.
register_get_user_response
(
self
.
user
,
upvoted_ids
=
[
"test_thread"
])
...
...
@@ -707,6 +672,28 @@ class ThreadViewSetListTest(DiscussionAPIViewTestMixin, ModuleStoreTestCase, Pro
response_users
=
response_thread
[
'users'
]
self
.
assertEqual
(
expected_profile_data
,
response_users
[
response_thread
[
'author'
]])
def
test_profile_image_requested_field_anonymous_user
(
self
):
"""
Tests profile_image in requested_fields for thread created with anonymous user
"""
source_threads
=
[
self
.
create_source_thread
(
{
"user_id"
:
None
,
"username"
:
None
,
"anonymous"
:
True
,
"anonymous_to_peers"
:
True
}
),
]
self
.
register_get_user_response
(
self
.
user
,
upvoted_ids
=
[
"test_thread"
])
self
.
register_get_threads_response
(
source_threads
,
page
=
1
,
num_pages
=
1
)
response
=
self
.
client
.
get
(
self
.
url
,
{
"course_id"
:
unicode
(
self
.
course
.
id
),
"requested_fields"
:
"profile_image"
},
)
self
.
assertEqual
(
response
.
status_code
,
200
)
response_thread
=
json
.
loads
(
response
.
content
)[
'results'
][
0
]
self
.
assertIsNone
(
response_thread
[
'author'
])
self
.
assertEqual
({},
response_thread
[
'users'
])
@httpretty.activate
@disable_signal
(
api
,
'thread_created'
)
...
...
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