openedx.core.djangoapps.courseware_api package#
Submodules#
openedx.core.djangoapps.courseware_api.apps module#
Courseware API Application Configuration
Signal handlers are connected here.
- class openedx.core.djangoapps.courseware_api.apps.CoursewareAPIConfig(app_name, app_module)#
Bases:
AppConfigAppConfig for courseware API app
- name = 'openedx.core.djangoapps.courseware_api'#
- plugin_app = {'url_config': {'lms.djangoapp': {'app_name': 'openedx.core.djangoapps.courseware_api', 'namespace': 'courseware_api', 'regex': 'api/courseware/', 'relative_path': 'urls'}}}#
openedx.core.djangoapps.courseware_api.serializers module#
Course API Serializers. Representing course catalog data
- class openedx.core.djangoapps.courseware_api.serializers.CourseInfoSerializer(*args, **kwargs)#
Bases:
SerializerSerializer for Course objects providing minimal data about the course. Compare this with CourseDetailSerializer.
- class openedx.core.djangoapps.courseware_api.serializers.CourseProgramSerializer(*args, **kwargs)#
Bases:
Serializer- get_progress(program)#
- class openedx.core.djangoapps.courseware_api.serializers.ImageSerializer(*args, **kwargs)#
Bases:
SerializerCollection of URLs pointing to images of various sizes.
The URLs will be absolute URLs with the host set to the host of the current request. If the values to be serialized are already absolute URLs, they will be unchanged.
openedx.core.djangoapps.courseware_api.urls module#
Contains all the URLs
openedx.core.djangoapps.courseware_api.utils module#
Courseware API Mixins.
- openedx.core.djangoapps.courseware_api.utils.get_celebrations_dict(user, enrollment, course, browser_timezone)#
Returns a dict of celebrations that should be performed.
- openedx.core.djangoapps.courseware_api.utils.serialize_upgrade_info(user, course_overview, enrollment)#
Return verified mode upgrade information, or None.
This is used in a few API views to provide consistent upgrade info to frontends.
openedx.core.djangoapps.courseware_api.views module#
Course API Views
- class openedx.core.djangoapps.courseware_api.views.Celebration(**kwargs)#
Bases:
DeveloperErrorViewMixin,APIViewUse Cases
Marks a particular celebration as complete
Example Requests
POST /api/courseware/celebration/{course_key}
Request Parameters
Body consists of the following fields:
first_section (bool): whether we should celebrate when a user finishes their first section of a course
weekly_goal (bool): whether we should celebrate when a user hits their weekly learning goal in a course
Returns
200 or 201 or 202 on success with above fields.
400 if an invalid parameter was sent.
404 if the course is not available or cannot be seen.
- authentication_classes = (<class 'edx_rest_framework_extensions.auth.jwt.authentication.JwtAuthentication'>, <class 'openedx.core.lib.api.authentication.BearerAuthenticationAllowInactiveUser'>, <class 'edx_rest_framework_extensions.auth.session.authentication.SessionAuthenticationAllowInactiveUser'>)#
- http_method_names = ['post']#
- permission_classes = (<class 'rest_framework.permissions.IsAuthenticated'>,)#
- post(request, course_key_string, *args, **kwargs)#
Handle a POST request.
- class openedx.core.djangoapps.courseware_api.views.CoursewareInformation(**kwargs)#
Bases:
RetrieveAPIViewUse Cases
Request details for a course
Example Requests
GET /api/courseware/course/{course_key}
Response Values
Body consists of the following fields:
- access_expiration: An object detailing when access to this course will expire
expiration_date: (str) When the access expires, in ISO 8601 notation
masquerading_expired_course: (bool) Whether this course is expired for the masqueraded user
upgrade_deadline: (str) Last chance to upgrade, in ISO 8601 notation (or None if can’t upgrade anymore)
upgrade_url: (str) Upgrade linke (or None if can’t upgrade anymore)
- celebrations: An object detailing which celebrations to render
- first_section: (bool) If the first section celebration should render
Note: Also uses information from frontend so this value is not final
streak_length_to_celebrate: (int) The streak length to celebrate for the learner
streak_discount_enabled: (bool) If the frontend should render an upgrade discount for hitting the streak
weekly_goal: (bool) If the weekly goal celebration should render
- course_goals:
- selected_goal:
days_per_week: (int) The number of days the learner wants to learn per week
subscribed_to_reminders: (bool) Whether the learner wants email reminders about their goal
weekly_learning_goal_enabled: Flag indicating if this feature is enabled for this call
- effort: A textual description of the weekly hours of effort expected
in the course.
end: Date the course ends, in ISO 8601 notation
- enrollment: Enrollment status of authenticated user
mode: audit, verified, etc
is_active: boolean
enrollment_end: Date enrollment ends, in ISO 8601 notation
enrollment_start: Date enrollment begins, in ISO 8601 notation
- entrance_exam_data: An object containing information about the course’s entrance exam
entrance_exam_current_score: (float) The users current score on the entrance exam
entrance_exam_enabled: (bool) If the course has an entrance exam
entrance_exam_id: (str) The block id for the entrance exam if enabled. Will be a section (chapter)
- entrance_exam_minimum_score_pct: (float) The minimum score a user must receive on the entrance exam
to unlock the remainder of the course. Returned as a float (i.e. 0.7 for 70%)
entrance_exam_passed: (bool) Indicates if the entrance exam has been passed
- id: A unique identifier of the course; a serialized representation
of the opaque key identifying the course.
- media: An object that contains named media items. Included here:
course_image: An image to show for the course. Represented as an object with the following fields:
uri: The location of the image
name: Name of the course
- offer: An object detailing upgrade discount information
code: (str) Checkout code
expiration_date: (str) Expiration of offer, in ISO 8601 notation
original_price: (str) Full upgrade price without checkout code; includes currency symbol
discounted_price: (str) Upgrade price with checkout code; includes currency symbol
percentage: (int) Amount of discount
upgrade_url: (str) Checkout URL
org: Name of the organization that owns the course
- related_programs: A list of objects that contains program data related to the given course including:
- progress: An object containing program progress:
- complete: (int) Number of complete courses in the program (a course is completed if the user has
earned a certificate for any of the nested course runs)
- in_progress: (int) Number of courses in the program that are in progress (a course is in progress if
the user has enrolled in any of the nested course runs)
not_started: (int) Number of courses in the program that have not been started
slug: (str) The program type
title: (str) The title of the program
url: (str) The link to the program’s landing page
uuid: (str) A unique identifier of the program
short_description: A textual description of the course
start: Date the course begins, in ISO 8601 notation
start_display: Readably formatted start of the course
- start_type: Hint describing how start_display is set. One of:
“string”: manually set by the course author
“timestamp”: generated from the start timestamp
“empty”: no start date is specified
pacing: Course pacing. Possible values: instructor, self
user_timezone: User’s chosen timezone setting (or null for browser default)
- user_has_passing_grade: Whether or not the effective user’s grade is equal to or above the courses minimum
passing grade
course_exit_page_is_active: Flag for the learning mfe on whether or not the course exit page should display
certificate_data: data regarding the effective user’s certificate for the given course
- verify_identity_url: URL for a learner to verify their identity. Only returned for learners enrolled in a
verified mode. Will update to reverify URL if necessary.
linkedin_add_to_profile_url: URL to add the effective user’s certificate to a LinkedIn Profile.
user_needs_integrity_signature: Whether the user needs to sign the integrity agreement for the course
learning_assistant_enabled: Whether the Xpert Learning Assistant is enabled for the requesting user
Parameters:
- requested_fields (optional) comma separated list:
If set, then only those fields will be returned.
username (optional) username to masquerade as (if requesting user is staff)
Returns
200 on success with above fields.
400 if an invalid parameter was sent or the username was not provided for an authenticated request.
403 if a user who does not have permission to masquerade as another user specifies a username other than their own.
404 if the course is not available or cannot be seen.
- authentication_classes = (<class 'edx_rest_framework_extensions.auth.jwt.authentication.JwtAuthentication'>, <class 'openedx.core.lib.api.authentication.BearerAuthenticationAllowInactiveUser'>, <class 'edx_rest_framework_extensions.auth.session.authentication.SessionAuthenticationAllowInactiveUser'>)#
- dispatch(request, *args, **kwargs)#
.dispatch() is pretty much the same as Django’s regular dispatch, but with extra hooks for startup, finalize, and exception handling.
- finalize_response(request, response, *args, **kwargs)#
Return the final response, exposing the ‘Date’ header for computing relative time to the dates in the data.
Important dates such as ‘access_expiration’ are enforced server-side based on correct time; client-side clocks are frequently substantially far off which could lead to inaccurate messaging and incorrect expectations. Therefore, any messaging about those dates should be based on the server time and preferably in relative terms (time remaining); the ‘Date’ header is a straightforward and generalizable way for client-side code to get this reference.
- get_object()#
Return the requested course object, if the user has appropriate permissions.
- get_serializer_context()#
Return extra context to be used by the serializer class.
- serializer_class#
alias of
CourseInfoSerializer
- set_last_seen_courseware_timezone(user)#
The timezone in the user’s account is frequently not set. This method sets a user’s recent timezone that can be used as a fallback
- class openedx.core.djangoapps.courseware_api.views.CoursewareMeta(course_key, request, username='')#
Bases:
objectEncapsulates courseware and enrollment metadata.
- property access_expiration#
- property can_access_proctored_exams#
Returns if the user is eligible to access proctored exams
- property can_show_upgrade_sock#
- property celebrations#
Returns a dict of celebrations that should be performed.
- property certificate_data#
Returns certificate data if the effective_user is enrolled. Note: certificate data can be None depending on learner and/or course state.
- property content_type_gating_enabled#
- property course_exit_page_is_active#
Returns a boolean on if the course exit page is active
- property course_goals#
Returns a dict of course goals
- course_grade#
Returns the Course Grade for the effective user in the course
Cached property since we use this twice in the class and don’t want to recreate the entire grade.
- property enrollment#
Return enrollment information.
- property entrance_exam_data#
Returns Entrance Exam data for the course
Although some of the fields will have values (i.e. entrance_exam_minimum_score_pct and entrance_exam_passed), nothing will be used unless entrance_exam_enabled is True.
- property is_integrity_signature_enabled#
Django setting for the integrity signature feature.
- property learning_assistant_enabled#
Returns a boolean representing whether the requesting user should have access to the Xpert Learning Assistant.
- property license#
- property linkedin_add_to_profile_url#
Returns a URL to add a certificate to a LinkedIn profile (will autofill fields).
Requires LinkedIn sharing to be enabled, either via a site configuration or a LinkedInAddToProfileConfiguration object being enabled.
- property notes#
Return whether edxnotes is enabled and visible.
- property offer#
Returns related program data if the effective_user is enrolled. Note: related programs can be None depending on the course.
- property user_has_passing_grade#
Returns a boolean on if the effective_user has a passing grade in the course
- property user_needs_integrity_signature#
Boolean describing whether the user needs to sign the integrity agreement for a course.
- property user_timezone#
Returns the user’s timezone setting (may be None)
- property verification_status#
Returns a String of the verification status of learner.
- property verify_identity_url#
Returns a String to the location to verify a learner’s identity Note: This might return an absolute URL (if the verification MFE is enabled) or a relative
URL. The serializer will make the relative URL absolute so any consumers can treat this as a full URL.
- class openedx.core.djangoapps.courseware_api.views.Resume(**kwargs)#
Bases:
DeveloperErrorViewMixin,APIViewUse Cases
Request the last completed block in a course
Example Requests
GET /api/courseware/resume/{course_key}
Response Values
Body consists of the following fields:
block: the last completed block key
section: the key to the section
unit: the key to the unit
If no completion data is available, the keys will be null
Returns
200 on success with above fields.
400 if an invalid parameter was sent.
403 if a user who does not have permission to masquerade as another user specifies a username other than their own.
404 if the course is not available or cannot be seen.
- authentication_classes = (<class 'edx_rest_framework_extensions.auth.jwt.authentication.JwtAuthentication'>, <class 'edx_rest_framework_extensions.auth.session.authentication.SessionAuthenticationAllowInactiveUser'>)#
- get(request, course_key_string, *args, **kwargs)#
Return response to a GET request.
- permission_classes = (<class 'rest_framework.permissions.IsAuthenticated'>,)#
- class openedx.core.djangoapps.courseware_api.views.SequenceMetadata(**kwargs)#
Bases:
DeveloperErrorViewMixin,APIViewUse Cases
Request details for a sequence/subsection
Example Requests
GET /api/courseware/sequence/{usage_key}
Response Values
- Body consists of the following fields:
TODO
Returns
200 on success with above fields.
400 if an invalid parameter was sent.
403 if a user who does not have permission to masquerade as another user specifies a username other than their own.
404 if the course/usage_key is not available or cannot be seen.
422 if the usage key is valid but does not have sequence metadata (like a unit or a problem)
- authentication_classes = (<class 'edx_rest_framework_extensions.auth.jwt.authentication.JwtAuthentication'>, <class 'edx_rest_framework_extensions.auth.session.authentication.SessionAuthenticationAllowInactiveUser'>)#
- get(request, usage_key_string, *args, **kwargs)#
Return response to a GET request.