import frappe from lms.lms.utils import get_lesson_index from lms.page_renderers import get_profile_url_prefix def get_context(context): context.no_cache = 1 try: username = frappe.form_dict["username"] except KeyError: username = frappe.db.get_value("User", frappe.session.user, ["username"]) if username: frappe.local.flags.redirect_location = get_profile_url_prefix() + username raise frappe.Redirect try: context.member = frappe.get_doc("User", {"username": username}) except Exception: context.template = "www/404.html" return context.profile_tabs = get_profile_tabs(context.member) context.notifications = get_notifications() def get_profile_tabs(user): """Returns the enabled ProfileTab objects. Each ProfileTab is rendered as a tab on the profile page and the they are specified as profile_tabs hook. """ tabs = frappe.get_hooks("profile_tabs") or [] return [frappe.get_attr(tab)(user) for tab in tabs] def get_notifications(): notifications = frappe.get_all( "Notification Log", {"document_type": "Course Lesson", "for_user": frappe.session.user}, ["subject", "creation", "from_user", "document_name"], ) for notification in notifications: course = frappe.db.get_value("Course Lesson", notification.document_name, "course") notification.url = ( f"/courses/{course}/learn/{get_lesson_index(notification.document_name)}" ) return notifications