fix: removing get_doc dependencies for lms course
This commit is contained in:
@@ -1,35 +0,0 @@
|
||||
import frappe
|
||||
from school.lms.models import Course
|
||||
|
||||
def get_common_context(context):
|
||||
context.no_cache = 1
|
||||
|
||||
course_name = frappe.form_dict["course"]
|
||||
try:
|
||||
batch_name = frappe.form_dict["batch"]
|
||||
except KeyError:
|
||||
batch_name = None
|
||||
|
||||
course = frappe.get_doc("LMS Course", course_name)
|
||||
if not course:
|
||||
context.template = "www/404.html"
|
||||
return
|
||||
context.course = course
|
||||
context.lessons = course.get_lessons()
|
||||
membership = course.get_membership(frappe.session.user, batch_name)
|
||||
context.membership = membership
|
||||
if membership:
|
||||
batch = course.get_batch(membership.batch)
|
||||
|
||||
if batch:
|
||||
context.batch = batch
|
||||
|
||||
context.course.query_parameter = "?batch=" + membership.batch if membership and membership.batch 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 = course.get_learn_url(index_) + course.query_parameter
|
||||
raise frappe.Redirect
|
||||
@@ -19,13 +19,13 @@
|
||||
|
||||
{% include "school/templates/search_course/search_course.html" %}
|
||||
<div class="course-list">
|
||||
{% set title = _("Live Courses") %}
|
||||
{% set courses = live_courses %}
|
||||
{% set title = _("All Live Courses ({0})").format(courses | length) %}
|
||||
{% set classes = "live-courses" %}
|
||||
{% include "school/templates/course_list.html" %}
|
||||
|
||||
{% set title = _("Upcoming Courses") %}
|
||||
{% set courses = upcoming_courses %}
|
||||
{% set title = _("All Upcoming Courses ({0})").format(courses | length) %}
|
||||
{% set classes = "upcoming-courses mt-10" %}
|
||||
{% include "school/templates/course_list.html" %}
|
||||
</div>
|
||||
|
||||
@@ -6,21 +6,21 @@ def get_context(context):
|
||||
context.live_courses, context.upcoming_courses = get_courses()
|
||||
context.restriction = check_profile_restriction()
|
||||
context.metatags = {
|
||||
"title": "All Courses",
|
||||
"title": "All Live Courses",
|
||||
"image": frappe.db.get_single_value("Website Settings", "banner_image"),
|
||||
"description": "This page lists all the courses published on our website",
|
||||
"keywords": "All Courses, Courses, Learn"
|
||||
}
|
||||
|
||||
def get_courses():
|
||||
course_names = frappe.get_all("LMS Course",
|
||||
courses = frappe.get_all("LMS Course",
|
||||
filters={"is_published": True},
|
||||
fields=["name", "upcoming"])
|
||||
fields=["name", "upcoming", "title", "image"])
|
||||
|
||||
live_courses, upcoming_courses = [], []
|
||||
for course in course_names:
|
||||
for course in courses:
|
||||
if course.upcoming:
|
||||
upcoming_courses.append(frappe.get_doc("LMS Course", course.name))
|
||||
upcoming_courses.append(course)
|
||||
else:
|
||||
live_courses.append(frappe.get_doc("LMS Course", course.name))
|
||||
live_courses.append(course)
|
||||
return live_courses, upcoming_courses
|
||||
|
||||
97
school/www/utils.py
Normal file
97
school/www/utils.py
Normal file
@@ -0,0 +1,97 @@
|
||||
import frappe
|
||||
from school.lms.models import Course
|
||||
from frappe.utils import flt
|
||||
|
||||
def get_common_context(context):
|
||||
context.no_cache = 1
|
||||
|
||||
course_name = frappe.form_dict["course"]
|
||||
try:
|
||||
batch_name = frappe.form_dict["batch"]
|
||||
except KeyError:
|
||||
batch_name = None
|
||||
|
||||
course = frappe.get_doc("LMS Course", course_name)
|
||||
if not course:
|
||||
context.template = "www/404.html"
|
||||
return
|
||||
context.course = course
|
||||
context.lessons = course.get_lessons()
|
||||
membership = get_membership(course_name, frappe.session.user, batch_name)
|
||||
context.membership = membership
|
||||
if membership:
|
||||
batch = course.get_batch(membership.batch)
|
||||
|
||||
if batch:
|
||||
context.batch = batch
|
||||
|
||||
context.course.query_parameter = "?batch=" + membership.batch if membership and membership.batch 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 = course.get_learn_url(index_) + course.query_parameter
|
||||
raise frappe.Redirect
|
||||
|
||||
def get_membership(course, member, batch=None):
|
||||
filters = {
|
||||
"member": member,
|
||||
"course": course
|
||||
}
|
||||
if batch:
|
||||
filters["batch"] = batch
|
||||
|
||||
membership = frappe.db.get_value("LMS Batch Membership",
|
||||
filters,
|
||||
["name", "batch", "current_lesson", "member_type", "progress"],
|
||||
as_dict=True)
|
||||
|
||||
if membership and membership.batch:
|
||||
membership.batch_title = frappe.db.get_value("LMS Batch", membership.batch, "title")
|
||||
return membership
|
||||
|
||||
def get_chapters(course):
|
||||
"""Returns all chapters of this course.
|
||||
"""
|
||||
chapters = frappe.get_all("Course Chapter",
|
||||
{ "course": course },
|
||||
["name", "title", "description", "idx"])
|
||||
return chapters
|
||||
|
||||
def get_lessons(course, chapter=None):
|
||||
""" If chapter is passed, returns lessons of only that chapter.
|
||||
Else returns lessons of all chapters of the course """
|
||||
lessons = []
|
||||
|
||||
if chapter:
|
||||
return get_lesson_details(chapter)
|
||||
|
||||
for chapter in get_chapters(course):
|
||||
lesson = get_lesson_details(chapter)
|
||||
lessons += lesson
|
||||
|
||||
return lessons
|
||||
|
||||
def get_lesson_details(chapter):
|
||||
lessons = []
|
||||
lesson_list = frappe.get_all("Lesson Reference",
|
||||
{"parent": chapter.name},
|
||||
["lesson", "idx"],
|
||||
order_by="idx")
|
||||
|
||||
for row in lesson_list:
|
||||
lesson_details = frappe.db.get_value("Course Lesson", row.lesson, "name", as_dict=True)
|
||||
lesson_details.number = flt("{}.{}".format(chapter.idx, row.idx))
|
||||
lessons.append(lesson_details)
|
||||
return lessons
|
||||
|
||||
def get_tags(course):
|
||||
tags = frappe.db.get_value("LMS Course", course, "tags")
|
||||
return tags.split(",") if tags else []
|
||||
|
||||
def get_instructor(course):
|
||||
if self.instructor:
|
||||
return frappe.get_doc("User", self.instructor)
|
||||
return frappe.get_doc("User", self.owner)
|
||||
Reference in New Issue
Block a user