Add per-user metadata to course pages to make experimentation easier
This commit is contained in:
48
lms/djangoapps/experiments/utils.py
Normal file
48
lms/djangoapps/experiments/utils.py
Normal file
@@ -0,0 +1,48 @@
|
||||
from student.models import CourseEnrollment
|
||||
from course_modes.models import (
|
||||
get_cosmetic_verified_display_price
|
||||
)
|
||||
from courseware.date_summary import (
|
||||
VerifiedUpgradeDeadlineDate
|
||||
)
|
||||
|
||||
|
||||
def check_and_get_upgrade_link(request, user, course_id):
|
||||
"""
|
||||
For an authenticated user, return a link to allow them to upgrade
|
||||
in the specified course.
|
||||
"""
|
||||
if request.user.is_authenticated():
|
||||
upgrade_data = VerifiedUpgradeDeadlineDate(None, user, course_id=course_id)
|
||||
if upgrade_data.is_enabled:
|
||||
request.need_to_set_upgrade_cookie = True
|
||||
return upgrade_data
|
||||
|
||||
return None
|
||||
|
||||
|
||||
def get_experiment_user_metadata_context(request, course, user):
|
||||
"""
|
||||
Return a context dictionary with the keys used by the user_metadata.html.
|
||||
"""
|
||||
enrollment_mode = None
|
||||
enrollment_time = None
|
||||
try:
|
||||
enrollment = CourseEnrollment.objects.get(user_id=user.id, course_id=course.id)
|
||||
if enrollment.is_active:
|
||||
enrollment_mode = enrollment.mode
|
||||
enrollment_time = enrollment.created
|
||||
except CourseEnrollment.DoesNotExist:
|
||||
pass # Not enrolled, used the default None values
|
||||
|
||||
upgrade_data = check_and_get_upgrade_link(request, user, course.id)
|
||||
|
||||
return {
|
||||
'upgrade_link': upgrade_data and upgrade_data.link,
|
||||
'upgrade_price': get_cosmetic_verified_display_price(course),
|
||||
'enrollment_mode': enrollment_mode,
|
||||
'enrollment_time': enrollment_time,
|
||||
'pacing_type': 'self_paced' if course.self_paced else 'instructor_paced',
|
||||
'upgrade_deadline': upgrade_data and upgrade_data.date,
|
||||
'course_key': course.id,
|
||||
}
|
||||
Reference in New Issue
Block a user