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
212d498d
Commit
212d498d
authored
Mar 11, 2015
by
Matt Drayer
Committed by
Jonathan Piacenti
Aug 20, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mattdrayer/MCKIN-3046: Added multi-course grade query
parent
4bb341c8
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
43 additions
and
0 deletions
+43
-0
lms/djangoapps/api_manager/users/tests.py
+9
-0
lms/djangoapps/api_manager/users/urls.py
+1
-0
lms/djangoapps/api_manager/users/views.py
+33
-0
No files found.
lms/djangoapps/api_manager/users/tests.py
View file @
212d498d
...
...
@@ -1404,6 +1404,15 @@ class UsersApiTests(ModuleStoreTestCase):
self
.
assertEqual
(
response
.
data
[
'current_grade'
],
0.73
)
self
.
assertEqual
(
response
.
data
[
'proforma_grade'
],
0.9375
)
test_uri
=
'{}/{}/courses/grades'
.
format
(
self
.
users_base_uri
,
user_id
)
response
=
self
.
do_get
(
test_uri
)
self
.
assertEqual
(
response
.
status_code
,
200
)
self
.
assertEqual
(
response
.
data
[
0
][
'course_id'
],
unicode
(
course
.
id
))
self
.
assertEqual
(
response
.
data
[
0
][
'current_grade'
],
0.73
)
self
.
assertEqual
(
response
.
data
[
0
][
'proforma_grade'
],
0.9375
)
self
.
assertEqual
(
response
.
data
[
0
][
'complete_status'
],
False
)
def
is_user_profile_created_updated
(
self
,
response
,
data
):
"""This function compare response with user profile data """
...
...
lms/djangoapps/api_manager/users/urls.py
View file @
212d498d
...
...
@@ -8,6 +8,7 @@ from api_manager.users import views as users_views
urlpatterns
=
patterns
(
''
,
url
(
r'^metrics/cities/$'
,
users_views
.
UsersMetricsCitiesList
.
as_view
(),
name
=
'apimgr-users-metrics-cities-list'
),
url
(
r'^(?P<user_id>[a-zA-Z0-9]+)/courses/grades$'
,
users_views
.
UsersCoursesGradesList
.
as_view
(),
name
=
'users-courses-grades-list'
),
url
(
r'^(?P<user_id>[a-zA-Z0-9]+)/courses/(?P<course_id>[^/]+/[^/]+/[^/]+)/grades$'
,
users_views
.
UsersCoursesGradesDetail
.
as_view
(),
name
=
'users-courses-grades-detail'
),
url
(
r'^(?P<user_id>[a-zA-Z0-9]+)/courses/(?P<course_id>[^/]+/[^/]+/[^/]+)/metrics/social/$'
,
users_views
.
UsersSocialMetrics
.
as_view
(),
name
=
'users-social-metrics'
),
url
(
r'^(?P<user_id>[a-zA-Z0-9]+)/courses/(?P<course_id>[^/]+/[^/]+/[^/]+)/completions/$'
,
users_views
.
UsersCoursesCompletionsList
.
as_view
(),
name
=
'users-courses-completions-list'
),
...
...
lms/djangoapps/api_manager/users/views.py
View file @
212d498d
...
...
@@ -916,6 +916,39 @@ class UsersCoursesDetail(SecureAPIView):
return
Response
({},
status
=
status
.
HTTP_204_NO_CONTENT
)
class
UsersCoursesGradesList
(
SecureAPIView
):
"""
### The UsersCoursesGradesList view allows clients to interact with the User's gradebook across courses
- URI: ```/api/users/{user_id}/courses/grades?courses={course_id1,course_id2}```
- GET: Returns a JSON representation of the matched set from the gradebook
* courses (optional): Set filtering parameter consisting of comma-separated course identifiers
### Use Cases/Notes:
* Use the UsersCoursesGradesList view to interact with the User's gradebook across multiple Course enrollments
* Use GET to retrieve all of the Course gradebook entries for the specified User
"""
def
get
(
self
,
request
,
user_id
):
# pylint: disable=unused-argument
"""
GET /api/users/{user_id}/courses/grades
"""
grade_complete_match_range
=
getattr
(
settings
,
'GRADEBOOK_GRADE_COMPLETE_PROFORMA_MATCH_RANGE'
,
0.01
)
queryset
=
StudentGradebook
.
objects
.
filter
(
user
=
user_id
)
response_data
=
[]
for
record
in
queryset
:
complete_status
=
False
if
record
.
proforma_grade
<=
record
.
grade
+
grade_complete_match_range
:
complete_status
=
True
response_data
.
append
(
{
'course_id'
:
unicode
(
record
.
course_id
),
'current_grade'
:
record
.
grade
,
'proforma_grade'
:
record
.
proforma_grade
,
'complete_status'
:
complete_status
}
)
return
Response
(
response_data
,
status
=
status
.
HTTP_200_OK
)
class
UsersCoursesGradesDetail
(
SecureAPIView
):
"""
### The UsersCoursesGradesDetail view allows clients to interact with the User's gradebook for a particular Course
...
...
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