perf: misc performance improvements
This commit is contained in:
@@ -434,6 +434,7 @@ def get_assigned_badges(member):
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_all_users():
|
||||
frappe.only_for(["Moderator", "Course Creator", "Batch Evaluator"])
|
||||
users = frappe.get_all(
|
||||
"User",
|
||||
{
|
||||
@@ -1189,3 +1190,21 @@ def prepare_heatmap_data(start_date, number_of_days, date_count):
|
||||
def get_week_difference(start_date, current_date):
|
||||
diff_in_days = date_diff(current_date, start_date)
|
||||
return diff_in_days // 7
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_notifications(filters):
|
||||
notifications = frappe.get_all(
|
||||
"Notification Log",
|
||||
filters,
|
||||
["subject", "from_user", "link", "read", "name"],
|
||||
order_by="creation desc",
|
||||
)
|
||||
|
||||
for notification in notifications:
|
||||
from_user_details = frappe.db.get_value(
|
||||
"User", notification.from_user, ["full_name", "user_image"], as_dict=1
|
||||
)
|
||||
notification.update(from_user_details)
|
||||
|
||||
return notifications
|
||||
|
||||
@@ -72,16 +72,6 @@ class CourseLesson(Document):
|
||||
exercises = [value for name, value in macros if name == "Exercise"]
|
||||
return [frappe.get_doc("LMS Exercise", name) for name in exercises]
|
||||
|
||||
def get_progress(self):
|
||||
return frappe.db.get_value(
|
||||
"LMS Course Progress", {"lesson": self.name, "owner": frappe.session.user}, "status"
|
||||
)
|
||||
|
||||
def get_slugified_class(self):
|
||||
if self.get_progress():
|
||||
return ("").join([s for s in self.get_progress().lower().split()])
|
||||
return
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def save_progress(lesson, course):
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
"in_standard_filter": 1,
|
||||
"label": "Course",
|
||||
"options": "LMS Course",
|
||||
"read_only": 1
|
||||
"read_only": 1,
|
||||
"search_index": 1
|
||||
},
|
||||
{
|
||||
"fetch_from": "lesson.chapter",
|
||||
@@ -30,14 +31,16 @@
|
||||
"fieldtype": "Link",
|
||||
"label": "Chapter",
|
||||
"options": "Course Chapter",
|
||||
"read_only": 1
|
||||
"read_only": 1,
|
||||
"search_index": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "lesson",
|
||||
"fieldtype": "Link",
|
||||
"in_list_view": 1,
|
||||
"label": "Lesson",
|
||||
"options": "Course Lesson"
|
||||
"options": "Course Lesson",
|
||||
"search_index": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "status",
|
||||
@@ -45,7 +48,8 @@
|
||||
"in_list_view": 1,
|
||||
"in_standard_filter": 1,
|
||||
"label": "Status",
|
||||
"options": "Complete\nPartially Complete\nIncomplete"
|
||||
"options": "Complete\nPartially Complete\nIncomplete",
|
||||
"search_index": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_3",
|
||||
@@ -55,7 +59,8 @@
|
||||
"fieldname": "member",
|
||||
"fieldtype": "Link",
|
||||
"label": "Member",
|
||||
"options": "User"
|
||||
"options": "User",
|
||||
"search_index": 1
|
||||
},
|
||||
{
|
||||
"fetch_from": "member.full_name",
|
||||
@@ -67,7 +72,7 @@
|
||||
],
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"modified": "2024-02-27 11:43:08.326886",
|
||||
"modified": "2025-01-17 15:54:34.040621",
|
||||
"modified_by": "Administrator",
|
||||
"module": "LMS",
|
||||
"name": "LMS Course Progress",
|
||||
|
||||
@@ -450,24 +450,6 @@ def get_signup_optin_checks():
|
||||
return (", ").join(links)
|
||||
|
||||
|
||||
def get_popular_courses():
|
||||
courses = frappe.get_all("LMS Course", {"published": 1, "upcoming": 0})
|
||||
course_membership = []
|
||||
|
||||
for course in courses:
|
||||
course_membership.append(
|
||||
{
|
||||
"course": course.name,
|
||||
"members": cint(frappe.db.count("LMS Enrollment", {"course": course.name})),
|
||||
}
|
||||
)
|
||||
|
||||
course_membership = sorted(
|
||||
course_membership, key=lambda x: x.get("members"), reverse=True
|
||||
)
|
||||
return course_membership[:3]
|
||||
|
||||
|
||||
def format_amount(amount, currency):
|
||||
amount_reduced = amount / 1000
|
||||
if amount_reduced < 1:
|
||||
|
||||
@@ -1,31 +1,9 @@
|
||||
{% set enrolled = get_enrolled_courses().in_progress + get_enrolled_courses().completed %}
|
||||
|
||||
|
||||
{% if enrolled | length %}
|
||||
<div class="cards-parent">
|
||||
{% for course in enrolled %}
|
||||
{{ widgets.CourseCard(course=course) }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
|
||||
{% else %}
|
||||
{% set site_name = frappe.db.get_single_value("System Settings", "app_name") %}
|
||||
<div class="empty-state p-5">
|
||||
<div style="text-align: left; flex: 1;">
|
||||
<div class="text-center">
|
||||
<div class="empty-state-heading">{{ _("You haven't enrolled for any courses") }}</div>
|
||||
<div class="course-meta mb-6">{{ _("Here are a few courses we recommend for you to get started with {0}").format(site_name) }}</div>
|
||||
</div>
|
||||
{% set recommended_courses = get_popular_courses() %}
|
||||
<div class="cards-parent">
|
||||
{% for course in recommended_courses %}
|
||||
{% if course %}
|
||||
{% set course_details = frappe.get_doc("LMS Course", course.course) %}
|
||||
{{ widgets.CourseCard(course=course_details) }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
Reference in New Issue
Block a user