-
Notifications
You must be signed in to change notification settings - Fork 4.2k
feat: Instructor Dashboard - Add Content Groups V2 JSON REST API #37849
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
feat: Instructor Dashboard - Add Content Groups V2 JSON REST API #37849
Conversation
|
Thanks for the pull request, @brianjbuck-wgu! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. DetailsWhere can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
de18b6b to
8955f91
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR implements a pure JSON REST API for managing content group configurations in the instructor dashboard, replacing the legacy HTML+JSON hybrid endpoint with a modern RESTful interface.
Key changes:
- Added two new GET endpoints for listing and retrieving content group configurations
- Introduced serializers to ensure consistent JSON structure for content groups API responses
- Comprehensive test coverage for authentication, permissions, and data filtering scenarios
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| cms/djangoapps/contentstore/rest_api/v2/views/group_configurations.py | New API view module implementing list and detail endpoints for content group configurations with proper error handling |
| cms/djangoapps/contentstore/rest_api/v2/serializers/group_configurations.py | Serializers defining the JSON schema for groups, configurations, and list responses |
| cms/djangoapps/contentstore/rest_api/v2/serializers/init.py | Updated exports to include new group configuration serializers |
| cms/djangoapps/contentstore/rest_api/v2/urls.py | Added URL patterns for the two new content groups endpoints |
| cms/djangoapps/contentstore/rest_api/v2/views/tests/test_group_configurations.py | Comprehensive test suite covering authentication, filtering, error cases, and permissions |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
cms/djangoapps/contentstore/rest_api/v2/views/group_configurations.py
Outdated
Show resolved
Hide resolved
365364a to
1b514ee
Compare
dwong2708
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good overall — I just have a few questions.
| to show enrollment tracks and experiment groups. | ||
| """ | ||
|
|
||
| all_group_configurations = ContentGroupConfigurationSerializer( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I’m wondering if we’ll only use these fields, since the UI seems to only need the content group name.
|
|
||
| # Find the configuration | ||
| partition = None | ||
| for p in course.user_partitions: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could this configuration be done at the API level? If the data comes from a queryset, we might need to filter it there.
|
this won't be under a instructor/* endpoint? |
@diana-villalvazo-wgu, The original v1 endpoint as a CMS endpoint, not an instructor API endpoint so I followed that convention. |
feanil
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks like there is already a CourseGroupConfigurationsView rest API. Is there a reason that one doesn't meet our needs? It looks like it returns just json data. Also, was there an ADR PR related to this endpoint that I missed? Can you link to it in the description if it exists?
1b514ee to
b21c0fb
Compare
|
@diana-villalvazo-wgu, I refactored the code to be in LMS instead of CMS. |
5b12a16 to
ed0904f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.
Comments suppressed due to low confidence (1)
lms/djangoapps/instructor/views/api_v2.py:1
- The all_group_configurations field is always returning a single-element list, but the function get_cohorted_user_partition only returns cohort-scheme partitions. If there are multiple cohort-scheme partitions in course.user_partitions, only the first one will be returned. Consider iterating through all course.user_partitions and collecting all partitions with scheme='cohort' to ensure all content groups are included in the response.
"""
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
86ee9ee to
1d7f4b4
Compare
@feanil, the |
- Add GET /api/instructor/v2/courses/{course_id}/group_configurations
- Add GET /api/instructor/v2/courses/{course_id}/group_configurations/{id}
- Create shared constants module for course groups
- Add serializers for content group configurations
- Add unit tests for new endpoints
- Add OpenAPI spec documentation
b086615 to
9503df1
Compare
Description
Implements a pure JSON REST API for managing content group configurations, replacing the legacy HTML+JSON hybrid endpoint with a RESTful interface.
Resolves: (#37848)