Course¶
py_moodle.course ¶
Course management module for Moodle.
Provides functions to list courses, retrieve course details, and enumerate course sections using AJAX endpoints.
Classes:
Name | Description |
---|---|
MoodleCourseError |
Exception raised for errors in course operations. |
Functions:
Name | Description |
---|---|
get_course_context_id |
Get the context ID for a course by scraping its main page. |
list_courses |
List all courses visible to the user. |
create_course |
Create a new course using the web form. |
delete_course |
Delete a course by ID using the web interface. |
get_course |
Get details for a specific course. |
get_course_with_sections_and_modules |
Return full course data with sections and modules. |
list_sections |
Extract a list of sections from course contents. |
Classes¶
MoodleCourseError ¶
Bases: Exception
Exception raised for errors in course operations.
Functions¶
get_course_context_id ¶
Get the context ID for a course by scraping its main page.
This mimics how the frontend retrieves the ID, making it the most reliable method.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
session
|
Session
|
Authenticated requests session. |
required |
base_url
|
str
|
Base URL of the Moodle instance. |
required |
course_id
|
int
|
Identifier of the course. |
required |
Returns:
Name | Type | Description |
---|---|---|
int |
int
|
Context ID of the course. |
Raises:
Type | Description |
---|---|
MoodleCourseError
|
If the context ID cannot be found. |
list_courses ¶
list_courses(
session: Session,
base_url: str,
*,
token: str | None = None,
sesskey: str | None = None
) -> List[Dict[str, Any]]
List all courses visible to the user.
Uses the core_course_get_courses
webservice when a token is
available and falls back to the AJAX endpoint otherwise.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
session
|
Session
|
Authenticated requests session. |
required |
base_url
|
str
|
Base URL of the Moodle instance. |
required |
token
|
str | None
|
Webservice token for REST API (optional, preferred). |
None
|
sesskey
|
str | None
|
Session key for AJAX calls (optional, fallback). |
None
|
Returns:
Type | Description |
---|---|
List[Dict[str, Any]]
|
List[Dict[str, Any]]: List of course dictionaries. |
Raises:
Type | Description |
---|---|
MoodleCourseError
|
If the request fails. |
create_course ¶
create_course(
session: Session,
base_url: str,
sesskey: str,
fullname: str,
shortname: str,
categoryid: int = 1,
visible: int = 1,
summary: str = "",
startdate: dict = None,
enddate: dict = None,
numsections: int = 4,
) -> Dict[str, Any]
Create a new course using the web form.
Simulates browser behavior by posting to edit.php
.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
session
|
Session
|
Authenticated requests session. |
required |
base_url
|
str
|
Base URL of the Moodle instance. |
required |
sesskey
|
str
|
Session key for AJAX calls. |
required |
fullname
|
str
|
Full name of the course. |
required |
shortname
|
str
|
Short name of the course. |
required |
categoryid
|
int
|
Category ID. |
1
|
visible
|
int
|
Visibility flag (1 for visible, 0 for hidden). |
1
|
summary
|
str
|
Course summary. |
''
|
startdate
|
dict
|
Dict with keys |
None
|
enddate
|
dict
|
Dict with keys |
None
|
numsections
|
int
|
Number of sections. |
4
|
Returns:
Type | Description |
---|---|
Dict[str, Any]
|
Dict[str, Any]: Created course dictionary with at least |
Raises:
Type | Description |
---|---|
MoodleCourseError
|
If the request fails. |
delete_course ¶
delete_course(
session: Session,
base_url: str,
sesskey: str,
courseid: int,
force: bool = False,
) -> None
Delete a course by ID using the web interface.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
session
|
Session
|
Authenticated requests session. |
required |
base_url
|
str
|
Base URL of the Moodle instance. |
required |
sesskey
|
str
|
Session key for AJAX calls. |
required |
courseid
|
int
|
ID of the course to delete. |
required |
force
|
bool
|
Whether to skip confirmation and delete directly. |
False
|
Raises:
Type | Description |
---|---|
MoodleCourseError
|
If the request fails. |
get_course ¶
get_course(
session: Session,
base_url: str,
sesskey: str,
courseid: int,
token: str = None,
) -> List[Dict[str, Any]]
Get details for a specific course.
Attempts the webservice first and falls back to AJAX if necessary.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
session
|
Session
|
Authenticated requests session. |
required |
base_url
|
str
|
Base URL of the Moodle instance. |
required |
sesskey
|
str
|
Session key for AJAX calls. |
required |
courseid
|
int
|
Identifier of the course to fetch. |
required |
token
|
str
|
Webservice token (optional). |
None
|
Returns:
Type | Description |
---|---|
List[Dict[str, Any]]
|
List[Dict[str, Any]]: Course contents including sections and modules. |
Raises:
Type | Description |
---|---|
MoodleCourseError
|
If both webservice and AJAX requests fail. |
get_course_with_sections_and_modules ¶
get_course_with_sections_and_modules(
session: Session,
base_url: str,
sesskey: str,
courseid: int,
token: str = None,
) -> Dict[str, Any]
Return full course data with sections and modules.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
session
|
Session
|
Authenticated requests session. |
required |
base_url
|
str
|
Base URL of the Moodle instance. |
required |
sesskey
|
str
|
Session key for AJAX calls. |
required |
courseid
|
int
|
Identifier of the course to fetch. |
required |
token
|
str
|
Webservice token (optional). |
None
|
Returns:
Type | Description |
---|---|
Dict[str, Any]
|
Dict[str, Any]: Course dictionary with keys |
Dict[str, Any]
|
|
list_sections ¶
Extract a list of sections from course contents.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
course_contents
|
List[Dict[str, Any]]
|
Output from |
required |
Returns:
Type | Description |
---|---|
List[Dict[str, Any]]
|
List[Dict[str, Any]]: Each dictionary represents a section. |
Notes
This function expects the output of get_course
.