feat: course details page

This commit is contained in:
Jannat Patel
2023-12-12 10:19:52 +05:30
parent 6de879cd2a
commit 77cda10419
11 changed files with 307 additions and 140 deletions

View File

@@ -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)

View File

@@ -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