-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathcompat.py
More file actions
74 lines (56 loc) · 2.29 KB
/
compat.py
File metadata and controls
74 lines (56 loc) · 2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
"""
Compatibility layer for testing without Open edX.
"""
import logging
from datetime import datetime
from django.contrib.auth.models import AbstractBaseUser
from opaque_keys.edx.keys import CourseKey
log = logging.getLogger(__name__)
def get_user_course_grade(user: AbstractBaseUser, course_key: CourseKey):
"""
Retrieve the CourseGrade object for a user in a specific course.
"""
# pylint: disable=import-outside-toplevel, import-error
from lms.djangoapps.grades.course_grade_factory import CourseGradeFactory
course_grade = CourseGradeFactory().read(user, course_key=course_key)
return course_grade
def get_catalog_api_client(user: AbstractBaseUser):
"""
Retrieve the api client for user.
"""
# pylint: disable=import-outside-toplevel, import-error
from openedx.core.djangoapps.catalog.utils import (
get_catalog_api_client as api_client,
)
return api_client(user)
def get_course_keys_with_outlines() -> list[CourseKey]:
"""
Retrieve course keys.
"""
# pylint: disable=import-outside-toplevel, import-error
from openedx.core.djangoapps.content.learning_sequences.api import (
get_course_keys_with_outlines as course_keys_with_outlines,
)
return course_keys_with_outlines()
def get_course_dates(course_key: CourseKey) -> tuple[datetime | None, datetime | None]:
"""Retrieve course start and end dates."""
# pylint: disable=import-outside-toplevel, import-error
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
try:
overview = CourseOverview.objects.get(id=course_key)
return overview.start, overview.end
except CourseOverview.DoesNotExist:
return None, None
def enroll_user_in_course(user: AbstractBaseUser, course_key: CourseKey) -> bool:
"""Enroll a user in a course."""
# pylint: disable=import-outside-toplevel, import-error
from common.djangoapps.student.api import CourseEnrollment
from common.djangoapps.student.models.course_enrollment import (
CourseEnrollmentException,
)
try:
CourseEnrollment.enroll(user, course_key)
return True
except CourseEnrollmentException as exc:
log.exception("Failed to enroll user %s in course %s: %s", user, course_key, exc)
return False