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
59970d3f
Commit
59970d3f
authored
Aug 11, 2014
by
Matt Drayer
Committed by
Jonathan Piacenti
Aug 20, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mattdrayer/api-workgroup-content-id: Added content_id field
parent
5878b1fc
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
144 additions
and
11 deletions
+144
-11
lms/djangoapps/projects/migrations/0006_auto__add_field_workgrouppeerreview_content_id.py
+0
-0
lms/djangoapps/projects/models.py
+1
-0
lms/djangoapps/projects/serializers.py
+1
-1
lms/djangoapps/projects/tests/test_peer_reviews.py
+33
-1
lms/djangoapps/projects/tests/test_submission_reviews.py
+26
-2
lms/djangoapps/projects/tests/test_workgroup_reviews.py
+26
-1
lms/djangoapps/projects/tests/test_workgroups.py
+50
-6
lms/djangoapps/projects/views.py
+7
-0
No files found.
lms/djangoapps/projects/migrations/0006_auto__add_field_workgrouppeerreview_content_id.py
0 → 100644
View file @
59970d3f
This diff is collapsed.
Click to expand it.
lms/djangoapps/projects/models.py
View file @
59970d3f
...
...
@@ -106,3 +106,4 @@ class WorkgroupPeerReview(TimeStampedModel):
reviewer
=
models
.
CharField
(
max_length
=
255
)
# AnonymousUserId
question
=
models
.
CharField
(
max_length
=
255
)
answer
=
models
.
CharField
(
max_length
=
255
)
content_id
=
models
.
CharField
(
max_length
=
255
,
null
=
True
,
blank
=
True
)
lms/djangoapps/projects/serializers.py
View file @
59970d3f
...
...
@@ -137,7 +137,7 @@ class WorkgroupPeerReviewSerializer(serializers.HyperlinkedModelSerializer):
model
=
WorkgroupPeerReview
fields
=
(
'id'
,
'url'
,
'created'
,
'modified'
,
'question'
,
'answer'
,
'workgroup'
,
'user'
,
'reviewer'
'workgroup'
,
'user'
,
'reviewer'
,
'content_id'
)
...
...
lms/djangoapps/projects/tests/test_peer_reviews.py
View file @
59970d3f
...
...
@@ -6,6 +6,7 @@ Run these tests @ Devstack:
"""
import
json
import
uuid
from
urllib
import
urlencode
from
django.contrib.auth.models
import
User
from
django.core.cache
import
cache
...
...
@@ -54,7 +55,7 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
self
.
test_course_id
=
unicode
(
self
.
course
.
id
)
self
.
test_bogus_course_id
=
'foo/bar/baz'
self
.
test_course_content_id
=
"i4x://blah"
self
.
test_course_content_id
=
unicode
(
self
.
chapter
.
scope_ids
.
usage_id
)
self
.
test_bogus_course_content_id
=
"14x://foo/bar/baz"
self
.
test_question
=
"Does the question data come from the XBlock definition?"
...
...
@@ -124,6 +125,7 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
'reviewer'
:
self
.
anonymous_user_id
,
'question'
:
self
.
test_question
,
'answer'
:
self
.
test_answer
,
'content_id'
:
self
.
test_course_content_id
}
response
=
self
.
do_post
(
self
.
test_peer_reviews_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
...
...
@@ -140,6 +142,7 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'question'
],
self
.
test_question
)
self
.
assertEqual
(
response
.
data
[
'answer'
],
self
.
test_answer
)
self
.
assertEqual
(
response
.
data
[
'workgroup'
],
self
.
test_workgroup
.
id
)
self
.
assertEqual
(
response
.
data
[
'content_id'
],
self
.
test_course_content_id
)
self
.
assertIsNotNone
(
response
.
data
[
'created'
])
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
...
...
@@ -153,6 +156,32 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
response
=
self
.
do_post
(
self
.
test_peer_reviews_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
400
)
def
test_peer_reviews_list_get
(
self
):
data
=
{
'workgroup'
:
self
.
test_workgroup
.
id
,
'user'
:
self
.
test_peer_user
.
id
,
'reviewer'
:
self
.
anonymous_user_id
,
'question'
:
self
.
test_question
,
'answer'
:
self
.
test_answer
,
'content_id'
:
self
.
test_course_content_id
}
response
=
self
.
do_post
(
self
.
test_peer_reviews_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
data
=
{
'workgroup'
:
self
.
test_workgroup
.
id
,
'user'
:
self
.
test_peer_user
.
id
,
'reviewer'
:
self
.
anonymous_user_id
,
'question'
:
self
.
test_question
,
'answer'
:
self
.
test_answer
,
'content_id'
:
self
.
test_course_content_id
}
response
=
self
.
do_post
(
self
.
test_peer_reviews_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
response
=
self
.
do_get
(
self
.
test_peer_reviews_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
response
.
data
),
2
)
def
test_peer_reviews_detail_get
(
self
):
data
=
{
'workgroup'
:
self
.
test_workgroup
.
id
,
...
...
@@ -160,6 +189,7 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
'reviewer'
:
self
.
anonymous_user_id
,
'question'
:
self
.
test_question
,
'answer'
:
self
.
test_answer
,
'content_id'
:
self
.
test_course_content_id
,
}
response
=
self
.
do_post
(
self
.
test_peer_reviews_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
...
...
@@ -173,10 +203,12 @@ class PeerReviewsApiTests(ModuleStoreTestCase):
)
self
.
assertEqual
(
response
.
data
[
'url'
],
confirm_uri
)
self
.
assertGreater
(
response
.
data
[
'id'
],
0
)
self
.
assertEqual
(
response
.
data
[
'workgroup'
],
self
.
test_workgroup
.
id
)
self
.
assertEqual
(
response
.
data
[
'user'
],
self
.
test_peer_user
.
id
)
self
.
assertEqual
(
response
.
data
[
'reviewer'
],
self
.
anonymous_user_id
)
self
.
assertEqual
(
response
.
data
[
'question'
],
self
.
test_question
)
self
.
assertEqual
(
response
.
data
[
'answer'
],
self
.
test_answer
)
self
.
assertEqual
(
response
.
data
[
'content_id'
],
self
.
test_course_content_id
)
self
.
assertIsNotNone
(
response
.
data
[
'created'
])
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
...
...
lms/djangoapps/projects/tests/test_submission_reviews.py
View file @
59970d3f
...
...
@@ -6,6 +6,7 @@ Run these tests @ Devstack:
"""
import
json
import
uuid
from
urllib
import
urlencode
from
django.contrib.auth.models
import
User
from
django.core.cache
import
cache
...
...
@@ -54,9 +55,8 @@ class SubmissionReviewsApiTests(ModuleStoreTestCase):
self
.
test_course_id
=
unicode
(
self
.
course
.
id
)
self
.
test_bogus_course_id
=
'foo/bar/baz'
self
.
test_course_content_id
=
"i4x://blah"
self
.
test_course_content_id
=
unicode
(
self
.
chapter
.
scope_ids
.
usage_id
)
self
.
test_bogus_course_content_id
=
"14x://foo/bar/baz"
self
.
test_question
=
"Does the question data come from the XBlock definition?"
self
.
test_answer
=
"It sure does! And so does the answer data!"
...
...
@@ -145,6 +145,30 @@ class SubmissionReviewsApiTests(ModuleStoreTestCase):
self
.
assertIsNotNone
(
response
.
data
[
'created'
])
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
def
test_submission_reviews_list_get
(
self
):
data
=
{
'submission'
:
self
.
test_submission
.
id
,
'reviewer'
:
self
.
anonymous_user_id
,
'question'
:
self
.
test_question
,
'answer'
:
self
.
test_answer
,
'content_id'
:
self
.
test_course_content_id
,
}
response
=
self
.
do_post
(
self
.
test_submission_reviews_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
data
=
{
'submission'
:
self
.
test_submission
.
id
,
'reviewer'
:
self
.
anonymous_user_id
,
'question'
:
self
.
test_question
,
'answer'
:
self
.
test_answer
,
'content_id'
:
self
.
test_course_content_id
,
}
response
=
self
.
do_post
(
self
.
test_submission_reviews_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
response
=
self
.
do_get
(
self
.
test_submission_reviews_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
response
.
data
),
2
)
def
test_submission_reviews_detail_get
(
self
):
data
=
{
'submission'
:
self
.
test_submission
.
id
,
...
...
lms/djangoapps/projects/tests/test_workgroup_reviews.py
View file @
59970d3f
...
...
@@ -6,6 +6,7 @@ Run these tests @ Devstack:
"""
import
json
import
uuid
from
urllib
import
urlencode
from
django.contrib.auth.models
import
User
from
django.core.cache
import
cache
...
...
@@ -55,7 +56,7 @@ class WorkgroupReviewsApiTests(ModuleStoreTestCase):
self
.
test_course_id
=
unicode
(
self
.
course
.
id
)
self
.
test_bogus_course_id
=
'foo/bar/baz'
self
.
test_course_content_id
=
"i4x://blah"
self
.
test_course_content_id
=
unicode
(
self
.
chapter
.
scope_ids
.
usage_id
)
self
.
test_bogus_course_content_id
=
"14x://foo/bar/baz"
self
.
test_question
=
"Does the question data come from the XBlock definition?"
...
...
@@ -145,6 +146,30 @@ class WorkgroupReviewsApiTests(ModuleStoreTestCase):
self
.
assertIsNotNone
(
response
.
data
[
'created'
])
self
.
assertIsNotNone
(
response
.
data
[
'modified'
])
def
test_workgroup_reviews_list_get
(
self
):
data
=
{
'workgroup'
:
self
.
test_workgroup
.
id
,
'reviewer'
:
self
.
anonymous_user_id
,
'question'
:
self
.
test_question
,
'answer'
:
self
.
test_answer
,
'content_id'
:
self
.
test_course_content_id
,
}
response
=
self
.
do_post
(
self
.
test_workgroup_reviews_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
data
=
{
'workgroup'
:
self
.
test_workgroup
.
id
,
'reviewer'
:
self
.
anonymous_user_id
,
'question'
:
self
.
test_question
,
'answer'
:
self
.
test_answer
,
'content_id'
:
self
.
test_course_content_id
,
}
response
=
self
.
do_post
(
self
.
test_workgroup_reviews_uri
,
data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
response
=
self
.
do_get
(
self
.
test_workgroup_reviews_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
response
.
data
),
2
)
def
test_workgroup_reviews_detail_get
(
self
):
data
=
{
'workgroup'
:
self
.
test_workgroup
.
id
,
...
...
lms/djangoapps/projects/tests/test_workgroups.py
View file @
59970d3f
...
...
@@ -7,6 +7,7 @@ Run these tests @ Devstack:
from
datetime
import
datetime
import
json
import
uuid
from
urllib
import
urlencode
from
django.contrib.auth.models
import
Group
,
User
from
django.core.cache
import
cache
...
...
@@ -385,18 +386,41 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
'user'
:
self
.
test_user
.
id
,
'reviewer'
:
self
.
test_user
.
username
,
'question'
:
'Test question?'
,
'answer'
:
'Test answer!'
'answer'
:
'Test answer!'
,
'content_id'
:
self
.
test_course_content_id
}
response
=
self
.
do_post
(
self
.
test_peer_reviews_uri
,
pr_data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
pr_id
=
response
.
data
[
'id'
]
pr1_id
=
response
.
data
[
'id'
]
pr_data
=
{
'workgroup'
:
workgroup_id
,
'user'
:
self
.
test_user
.
id
,
'reviewer'
:
self
.
test_user
.
username
,
'question'
:
'Test question2'
,
'answer'
:
'Test answer2'
,
'content_id'
:
self
.
test_course_id
}
response
=
self
.
do_post
(
self
.
test_peer_reviews_uri
,
pr_data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
pr2_id
=
response
.
data
[
'id'
]
test_uri
=
'{}{}/'
.
format
(
self
.
test_workgroups_uri
,
workgroup_id
)
peer_reviews_uri
=
'{}peer_reviews/'
.
format
(
test_uri
)
response
=
self
.
do_get
(
peer_reviews_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
[
0
][
'id'
],
pr_id
)
self
.
assertEqual
(
len
(
response
.
data
),
2
)
self
.
assertEqual
(
response
.
data
[
0
][
'id'
],
pr1_id
)
self
.
assertEqual
(
response
.
data
[
0
][
'reviewer'
],
self
.
test_user
.
username
)
content_id
=
{
"content_id"
:
self
.
test_course_content_id
}
test_uri
=
'{}{}/peer_reviews/?{}'
.
format
(
self
.
test_workgroups_uri
,
workgroup_id
,
urlencode
(
content_id
))
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
response
.
data
),
1
)
self
.
assertEqual
(
response
.
data
[
0
][
'id'
],
pr1_id
)
self
.
assertEqual
(
response
.
data
[
0
][
'reviewer'
],
self
.
test_user
.
username
)
def
test_workgroups_workgroup_reviews_get
(
self
):
data
=
{
'name'
:
self
.
test_workgroup_name
,
...
...
@@ -409,16 +433,36 @@ class WorkgroupsApiTests(ModuleStoreTestCase):
'workgroup'
:
workgroup_id
,
'reviewer'
:
self
.
test_user
.
username
,
'question'
:
'Test question?'
,
'answer'
:
'Test answer!'
'answer'
:
'Test answer!'
,
'content_id'
:
self
.
test_course_content_id
}
response
=
self
.
do_post
(
self
.
test_workgroup_reviews_uri
,
wr_data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
wr_id
=
response
.
data
[
'id'
]
wr1_id
=
response
.
data
[
'id'
]
wr_data
=
{
'workgroup'
:
workgroup_id
,
'reviewer'
:
self
.
test_user
.
username
,
'question'
:
'Test question?'
,
'answer'
:
'Test answer!'
,
'content_id'
:
self
.
test_course_id
}
response
=
self
.
do_post
(
self
.
test_workgroup_reviews_uri
,
wr_data
)
self
.
assertEqual
(
response
.
status_code
,
201
)
test_uri
=
'{}{}/'
.
format
(
self
.
test_workgroups_uri
,
workgroup_id
)
workgroup_reviews_uri
=
'{}workgroup_reviews/'
.
format
(
test_uri
)
response
=
self
.
do_get
(
workgroup_reviews_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
[
0
][
'id'
],
wr_id
)
self
.
assertEqual
(
len
(
response
.
data
),
2
)
self
.
assertEqual
(
response
.
data
[
0
][
'id'
],
wr1_id
)
self
.
assertEqual
(
response
.
data
[
0
][
'reviewer'
],
self
.
test_user
.
username
)
content_id
=
{
"content_id"
:
self
.
test_course_content_id
}
test_uri
=
'{}{}/workgroup_reviews/?{}'
.
format
(
self
.
test_workgroups_uri
,
workgroup_id
,
urlencode
(
content_id
))
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
len
(
response
.
data
),
1
)
self
.
assertEqual
(
response
.
data
[
0
][
'id'
],
wr1_id
)
self
.
assertEqual
(
response
.
data
[
0
][
'reviewer'
],
self
.
test_user
.
username
)
def
test_workgroups_submissions_get
(
self
):
...
...
lms/djangoapps/projects/views.py
View file @
59970d3f
...
...
@@ -179,6 +179,9 @@ class WorkgroupsViewSet(viewsets.ModelViewSet):
View Peer Reviews for a specific Workgroup
"""
peer_reviews
=
WorkgroupPeerReview
.
objects
.
filter
(
workgroup
=
pk
)
content_id
=
self
.
request
.
QUERY_PARAMS
.
get
(
'content_id'
,
None
)
if
content_id
is
not
None
:
peer_reviews
=
peer_reviews
.
filter
(
content_id
=
content_id
)
response_data
=
[]
if
peer_reviews
:
for
peer_review
in
peer_reviews
:
...
...
@@ -192,6 +195,10 @@ class WorkgroupsViewSet(viewsets.ModelViewSet):
View Workgroup Reviews for a specific Workgroup
"""
workgroup_reviews
=
WorkgroupReview
.
objects
.
filter
(
workgroup
=
pk
)
content_id
=
self
.
request
.
QUERY_PARAMS
.
get
(
'content_id'
,
None
)
if
content_id
is
not
None
:
workgroup_reviews
=
workgroup_reviews
.
filter
(
content_id
=
content_id
)
response_data
=
[]
if
workgroup_reviews
:
for
workgroup_review
in
workgroup_reviews
:
...
...
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