feat: course details page
This commit is contained in:
@@ -143,22 +143,18 @@ def add_mentor_to_subgroup(subgroup, email):
|
||||
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def get_user_info(user=None):
|
||||
def get_user_info():
|
||||
if frappe.session.user == "Guest":
|
||||
frappe.throw("Authentication failed", exc=frappe.AuthenticationError)
|
||||
filters = {}
|
||||
if user:
|
||||
filters["name"] = user
|
||||
return None
|
||||
|
||||
users = frappe.qb.get_query(
|
||||
user = frappe.db.get_value(
|
||||
"User",
|
||||
filters=filters,
|
||||
fields=["name", "email", "enabled", "user_image", "full_name", "user_type"],
|
||||
order_by="full_name asc",
|
||||
distinct=True,
|
||||
).run(as_dict=1)
|
||||
frappe.session.user,
|
||||
["name", "email", "enabled", "user_image", "full_name", "user_type"],
|
||||
as_dict=1,
|
||||
)
|
||||
user["roles"] = frappe.get_roles(user.name)
|
||||
return users
|
||||
return user
|
||||
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
|
||||
117
lms/lms/utils.py
117
lms/lms/utils.py
@@ -1152,59 +1152,65 @@ def change_currency(amount, currency, country=None):
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def get_courses():
|
||||
"""Returns the list of courses."""
|
||||
courses = frappe.get_all(
|
||||
"LMS Course",
|
||||
fields=[
|
||||
"name",
|
||||
"title",
|
||||
"short_introduction",
|
||||
"image",
|
||||
"published",
|
||||
"upcoming",
|
||||
"status",
|
||||
"paid_course",
|
||||
"course_price",
|
||||
"currency",
|
||||
],
|
||||
)
|
||||
courses = []
|
||||
course_list = frappe.get_all("LMS Course", pluck="name")
|
||||
for course in course_list:
|
||||
courses.append(get_course_details(course))
|
||||
|
||||
courses = get_course_details(courses)
|
||||
courses = get_categorized_courses(courses)
|
||||
return courses
|
||||
|
||||
|
||||
def get_course_details(courses):
|
||||
for course in courses:
|
||||
course.tags = get_tags(course.name)
|
||||
course.lesson_count = get_lesson_count(course.name)
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def get_course_details(course):
|
||||
print(course)
|
||||
course = frappe.db.get_value(
|
||||
"LMS Course",
|
||||
course,
|
||||
[
|
||||
"name",
|
||||
"title",
|
||||
"description",
|
||||
"image",
|
||||
"video_link",
|
||||
"short_introduction",
|
||||
"published",
|
||||
"upcoming",
|
||||
"status",
|
||||
],
|
||||
as_dict=1,
|
||||
)
|
||||
print(course)
|
||||
course.tags = get_tags(course.name)
|
||||
course.lesson_count = get_lesson_count(course.name)
|
||||
|
||||
course.enrollment_count = frappe.db.count(
|
||||
"LMS Enrollment", {"course": course.name, "member_type": "Student"}
|
||||
course.enrollment_count = frappe.db.count(
|
||||
"LMS Enrollment", {"course": course.name, "member_type": "Student"}
|
||||
)
|
||||
|
||||
avg_rating = get_average_rating(course.name) or 0
|
||||
course.avg_rating = frappe.utils.flt(
|
||||
avg_rating, frappe.get_system_settings("float_precision") or 3
|
||||
)
|
||||
|
||||
course.instructors = get_instructors(course.name)
|
||||
if course.paid_course:
|
||||
course.price = frappe.utils.fmt_money(course.course_price, 0, course.currency)
|
||||
else:
|
||||
course.price = _("Free")
|
||||
|
||||
if frappe.session.user == "Guest":
|
||||
course.membership = None
|
||||
course.is_instructor = False
|
||||
else:
|
||||
course.membership = frappe.db.get_value(
|
||||
"LMS Enrollment",
|
||||
{"member": frappe.session.user, "course": course.name},
|
||||
["name", "course", "current_lesson", "progress"],
|
||||
as_dict=1,
|
||||
)
|
||||
|
||||
avg_rating = get_average_rating(course.name) or 0
|
||||
course.avg_rating = frappe.utils.flt(
|
||||
avg_rating, frappe.get_system_settings("float_precision") or 3
|
||||
)
|
||||
|
||||
course.instructors = get_instructors(course.name)
|
||||
if course.paid_course:
|
||||
course.price = frappe.utils.fmt_money(course.course_price, 0, course.currency)
|
||||
else:
|
||||
course.price = _("Free")
|
||||
|
||||
if frappe.session.user == "Guest":
|
||||
course.membership = None
|
||||
course.is_instructor = False
|
||||
else:
|
||||
course.membership = frappe.db.get_value(
|
||||
"LMS Enrollment",
|
||||
{"member": frappe.session.user, "course": course.name},
|
||||
["name", "course", "current_lesson", "progress"],
|
||||
as_dict=1,
|
||||
)
|
||||
course.is_instructor = is_instructor(course.name)
|
||||
return courses
|
||||
course.is_instructor = is_instructor(course.name)
|
||||
return course
|
||||
|
||||
|
||||
def get_categorized_courses(courses):
|
||||
@@ -1234,3 +1240,22 @@ def get_categorized_courses(courses):
|
||||
"created": created,
|
||||
"under_review": under_review,
|
||||
}
|
||||
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def get_course_outline(course):
|
||||
"""Returns the course outline."""
|
||||
outline = []
|
||||
chapters = frappe.get_all(
|
||||
"Chapter Reference", {"parent": course}, ["chapter"], order_by="idx"
|
||||
)
|
||||
for chapter in chapters:
|
||||
chapter_details = frappe.db.get_value(
|
||||
"Course Chapter",
|
||||
chapter.chapter,
|
||||
["name", "title", "description", "idx"],
|
||||
as_dict=True,
|
||||
)
|
||||
chapter_details.lessons = get_lessons(chapter.chapter)
|
||||
outline.append(chapter_details)
|
||||
return outline
|
||||
|
||||
Reference in New Issue
Block a user