Files
lms/lms/www/utils.py
2024-01-08 16:17:50 +05:30

75 lines
1.8 KiB
Python

import frappe
from lms.lms.utils import get_lesson_url, get_lessons, get_membership
from frappe.utils import cstr
from lms.lms.utils import redirect_to_courses_list
def get_common_context(context):
context.no_cache = 1
try:
batch_name = frappe.form_dict["batch"]
except KeyError:
batch_name = None
course = frappe.db.get_value(
"LMS Course",
frappe.form_dict["course"],
["name", "title", "video_link", "enable_certification", "status"],
as_dict=True,
)
if not course:
redirect_to_courses_list()
context.course = course
context.lessons = get_lessons(course.name)
membership = get_membership(course.name, frappe.session.user, batch_name)
context.membership = membership
context.progress = frappe.utils.cint(membership.progress) if membership else 0
context.batch_old = (
membership.batch_old if membership and membership.batch_old else None
)
context.course.query_parameter = (
"?batch=" + membership.batch_old if membership and membership.batch_old else ""
)
context.livecode_url = get_livecode_url()
def get_livecode_url():
return frappe.db.get_single_value("LMS Settings", "livecode_url")
def redirect_to_lesson(course, index_="1.1"):
frappe.local.flags.redirect_location = (
get_lesson_url(course.name, index_) + course.query_parameter
)
raise frappe.Redirect
def get_current_lesson_details(lesson_number, context, is_edit=False):
details_list = list(filter(lambda x: cstr(x.number) == lesson_number, context.lessons))
if not len(details_list):
if is_edit:
return None
else:
redirect_to_lesson(context.course)
lesson_info = details_list[0]
lesson_info.body = lesson_info.body.replace('"', "'")
return lesson_info
def is_student(batch, member=None):
if not member:
member = frappe.session.user
return frappe.db.exists(
"Batch Student",
{
"student": member,
"parent": batch,
},
)