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
abeba3b2
Commit
abeba3b2
authored
Aug 07, 2014
by
Matt Drayer
Committed by
Jonathan Piacenti
Aug 20, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mattdrayer/api-users-courses-batch: Submit multiple content positions together
parent
29a82ecc
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
55 additions
and
51 deletions
+55
-51
lms/djangoapps/api_manager/users/tests.py
+43
-41
lms/djangoapps/api_manager/users/views.py
+12
-10
No files found.
lms/djangoapps/api_manager/users/tests.py
View file @
abeba3b2
...
@@ -790,31 +790,25 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -790,31 +790,25 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
position_data
=
{
position_data
=
{
'position'
:
{
'positions'
:
[
'parent_content_id'
:
unicode
(
course
.
id
),
{
'child_content_id'
:
str
(
chapter3
.
location
)
'parent_content_id'
:
unicode
(
course
.
id
),
}
'child_content_id'
:
str
(
chapter3
.
location
)
}
},
response
=
self
.
do_post
(
test_uri
,
data
=
position_data
)
{
self
.
assertEqual
(
response
.
data
[
'position'
],
unicode
(
chapter3
.
scope_ids
.
usage_id
))
'parent_content_id'
:
unicode
(
chapter3
.
scope_ids
.
usage_id
),
'child_content_id'
:
str
(
sequential2
.
location
)
position_data
=
{
},
'position'
:
{
{
'parent_content_id'
:
unicode
(
chapter3
.
scope_ids
.
usage_id
),
'parent_content_id'
:
unicode
(
sequential2
.
scope_ids
.
usage_id
),
'child_content_id'
:
str
(
sequential2
.
location
)
'child_content_id'
:
str
(
vertical3
.
location
)
}
}
]
}
}
response
=
self
.
do_post
(
test_uri
,
data
=
position_data
)
response
=
self
.
do_post
(
test_uri
,
data
=
position_data
)
self
.
assertEqual
(
response
.
data
[
'position'
],
unicode
(
sequential2
.
scope_ids
.
usage_id
))
self
.
assertEqual
(
response
.
data
[
'positions'
][
0
],
unicode
(
chapter3
.
scope_ids
.
usage_id
))
self
.
assertEqual
(
response
.
data
[
'positions'
][
1
],
unicode
(
sequential2
.
scope_ids
.
usage_id
))
position_data
=
{
self
.
assertEqual
(
response
.
data
[
'positions'
][
2
],
unicode
(
vertical3
.
scope_ids
.
usage_id
))
'position'
:
{
'parent_content_id'
:
unicode
(
sequential2
.
scope_ids
.
usage_id
),
'child_content_id'
:
str
(
vertical3
.
location
)
}
}
response
=
self
.
do_post
(
test_uri
,
data
=
position_data
)
self
.
assertEqual
(
response
.
data
[
'position'
],
unicode
(
vertical3
.
scope_ids
.
usage_id
))
response
=
self
.
do_get
(
response
.
data
[
'uri'
])
response
=
self
.
do_get
(
response
.
data
[
'uri'
])
self
.
assertEqual
(
response
.
data
[
'position_tree'
][
'chapter'
][
'id'
],
unicode
(
chapter3
.
scope_ids
.
usage_id
))
self
.
assertEqual
(
response
.
data
[
'position_tree'
][
'chapter'
][
'id'
],
unicode
(
chapter3
.
scope_ids
.
usage_id
))
...
@@ -839,11 +833,13 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -839,11 +833,13 @@ class UsersApiTests(ModuleStoreTestCase):
course_id
=
'asd/fa/9sd8fasdf'
course_id
=
'asd/fa/9sd8fasdf'
test_uri
=
'{}/{}/courses/{}'
.
format
(
self
.
users_base_uri
,
user_id
,
course_id
)
test_uri
=
'{}/{}/courses/{}'
.
format
(
self
.
users_base_uri
,
user_id
,
course_id
)
position_data
=
{
position_data
=
{
'position'
:
{
'positions'
:
[
'parent_content_id'
:
course_id
,
{
'child_content_id'
:
str
(
chapter1
.
location
)
'parent_content_id'
:
course_id
,
'child_content_id'
:
str
(
chapter1
.
location
)
}
}
]
}
}
response
=
self
.
do_post
(
test_uri
,
data
=
position_data
)
response
=
self
.
do_post
(
test_uri
,
data
=
position_data
)
self
.
assertEqual
(
response
.
status_code
,
404
)
self
.
assertEqual
(
response
.
status_code
,
404
)
...
@@ -869,14 +865,16 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -869,14 +865,16 @@ class UsersApiTests(ModuleStoreTestCase):
test_uri
=
test_uri
+
'/'
+
str
(
course
.
id
)
test_uri
=
test_uri
+
'/'
+
str
(
course
.
id
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
position_data
=
{
position_data
=
{
'position'
:
{
'positions'
:
[
'parent_content_id'
:
str
(
course
.
location
),
{
'child_content_id'
:
str
(
chapter1
.
location
)
'parent_content_id'
:
str
(
course
.
location
),
'child_content_id'
:
str
(
chapter1
.
location
)
}
}
]
}
}
response
=
self
.
do_post
(
test_uri
,
data
=
position_data
)
response
=
self
.
do_post
(
test_uri
,
data
=
position_data
)
self
.
assertEqual
(
response
.
data
[
'position
'
],
unicode
(
chapter1
.
scope_ids
.
usage_id
))
self
.
assertEqual
(
response
.
data
[
'position
s'
][
0
],
unicode
(
chapter1
.
scope_ids
.
usage_id
))
def
test_user_courses_detail_post_position_invalid_course
(
self
):
def
test_user_courses_detail_post_position_invalid_course
(
self
):
test_uri
=
'{}/{}/courses'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
test_uri
=
'{}/{}/courses'
.
format
(
self
.
users_base_uri
,
self
.
user
.
id
)
...
@@ -885,10 +883,12 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -885,10 +883,12 @@ class UsersApiTests(ModuleStoreTestCase):
test_uri
=
test_uri
+
'/'
+
unicode
(
self
.
course
.
id
)
test_uri
=
test_uri
+
'/'
+
unicode
(
self
.
course
.
id
)
self
.
assertEqual
(
response
.
status_code
,
201
)
self
.
assertEqual
(
response
.
status_code
,
201
)
position_data
=
{
position_data
=
{
'position'
:
{
'positions'
:
[
'parent_content_id'
:
self
.
test_bogus_course_id
,
{
'child_content_id'
:
self
.
test_bogus_content_id
'parent_content_id'
:
self
.
test_bogus_course_id
,
}
'child_content_id'
:
self
.
test_bogus_content_id
}
]
}
}
response
=
self
.
do_post
(
test_uri
,
data
=
position_data
)
response
=
self
.
do_post
(
test_uri
,
data
=
position_data
)
self
.
assertEqual
(
response
.
status_code
,
400
)
self
.
assertEqual
(
response
.
status_code
,
400
)
...
@@ -920,14 +920,16 @@ class UsersApiTests(ModuleStoreTestCase):
...
@@ -920,14 +920,16 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'course_id'
],
unicode
(
course
.
id
))
self
.
assertEqual
(
response
.
data
[
'course_id'
],
unicode
(
course
.
id
))
self
.
assertEqual
(
response
.
data
[
'user_id'
],
user_id
)
self
.
assertEqual
(
response
.
data
[
'user_id'
],
user_id
)
position_data
=
{
position_data
=
{
'position'
:
{
'positions'
:
[
'parent_content_id'
:
unicode
(
course
.
id
),
{
'child_content_id'
:
unicode
(
chapter1
.
scope_ids
.
usage_id
)
'parent_content_id'
:
unicode
(
course
.
id
),
'child_content_id'
:
unicode
(
chapter1
.
scope_ids
.
usage_id
)
}
}
]
}
}
response
=
self
.
do_post
(
confirm_uri
,
data
=
position_data
)
response
=
self
.
do_post
(
confirm_uri
,
data
=
position_data
)
self
.
assertEqual
(
response
.
data
[
'position
'
],
unicode
(
chapter1
.
scope_ids
.
usage_id
))
self
.
assertEqual
(
response
.
data
[
'position
s'
][
0
],
unicode
(
chapter1
.
scope_ids
.
usage_id
))
response
=
self
.
do_get
(
confirm_uri
)
response
=
self
.
do_get
(
confirm_uri
)
self
.
assertGreater
(
response
.
data
[
'position'
],
0
)
# Position in the GET response is an integer!
self
.
assertGreater
(
response
.
data
[
'position'
],
0
)
# Position in the GET response is an integer!
self
.
assertEqual
(
response
.
data
[
'position_tree'
][
'chapter'
][
'id'
],
unicode
(
chapter1
.
scope_ids
.
usage_id
))
self
.
assertEqual
(
response
.
data
[
'position_tree'
][
'chapter'
][
'id'
],
unicode
(
chapter1
.
scope_ids
.
usage_id
))
...
...
lms/djangoapps/api_manager/users/views.py
View file @
abeba3b2
...
@@ -808,17 +808,19 @@ class UsersCoursesDetail(SecureAPIView):
...
@@ -808,17 +808,19 @@ class UsersCoursesDetail(SecureAPIView):
return
Response
({},
status
=
status
.
HTTP_404_NOT_FOUND
)
return
Response
({},
status
=
status
.
HTTP_404_NOT_FOUND
)
response_data
[
'user_id'
]
=
user
.
id
response_data
[
'user_id'
]
=
user
.
id
response_data
[
'course_id'
]
=
course_id
response_data
[
'course_id'
]
=
course_id
if
request
.
DATA
[
'position'
]:
content_position
=
_save_content_position
(
request
,
user
,
course_key
,
request
.
DATA
[
'position'
]
)
if
not
content_position
:
return
Response
(
response_data
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
response_data
[
'position'
]
=
content_position
if
request
.
DATA
[
'positions'
]:
response_data
[
'positions'
]
=
[]
for
position
in
request
.
DATA
[
'positions'
]:
content_position
=
_save_content_position
(
request
,
user
,
course_key
,
position
)
if
not
content_position
:
return
Response
(
response_data
,
status
=
status
.
HTTP_400_BAD_REQUEST
)
response_data
[
'positions'
]
.
append
(
content_position
)
return
Response
(
response_data
,
status
=
status
.
HTTP_200_OK
)
return
Response
(
response_data
,
status
=
status
.
HTTP_200_OK
)
def
get
(
self
,
request
,
user_id
,
course_id
):
def
get
(
self
,
request
,
user_id
,
course_id
):
...
...
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