perf: misc performance improvements

This commit is contained in:
Jannat Patel
2025-01-17 17:17:02 +05:30
parent 58abfd004d
commit 145342bb72
10 changed files with 62 additions and 97 deletions

View File

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

View File

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

View File

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

View File

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

View File

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