From 944020ca6e356f179d8a077acabb392e652af9db Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Fri, 26 Apr 2024 16:20:09 +0530 Subject: [PATCH] fix: seo link redirections and guest certificate --- lms/hooks.py | 7 +++-- .../lms_certificate/lms_certificate.py | 6 ++++ lms/page_renderers.py | 31 +++++++++++++++++++ lms/public/frontend/index.html | 10 +++--- 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/lms/hooks.py b/lms/hooks.py index 8c2d583b..0bb32c40 100644 --- a/lms/hooks.py +++ b/lms/hooks.py @@ -146,9 +146,8 @@ website_redirects = [ {"source": "/update-profile", "target": "/edit-profile"}, {"source": "/courses", "target": "/lms/courses"}, { - "source": r"/courses/([^/]*)", + "source": r"^/courses/.*$", "target": "/lms/courses", - "match_with_query_string": True, }, {"source": "/batches", "target": "/lms/batches"}, { @@ -232,7 +231,8 @@ jinja = { # ] has_website_permission = { - "LMS Certificate Evaluation": "lms.lms.doctype.lms_certificate_evaluation.lms_certificate_evaluation.has_website_permission" + "LMS Certificate Evaluation": "lms.lms.doctype.lms_certificate_evaluation.lms_certificate_evaluation.has_website_permission", + "LMS Certificate": "lms.lms.doctype.lms_certificate.lms_certificate.has_website_permission", } profile_mandatory_fields = [ @@ -270,6 +270,7 @@ lms_markdown_macro_renderers = { page_renderer = [ "lms.page_renderers.ProfileRedirectPage", "lms.page_renderers.ProfilePage", + "lms.page_renderers.CoursePage", ] # set this to "/" to have profiles on the top-level diff --git a/lms/lms/doctype/lms_certificate/lms_certificate.py b/lms/lms/doctype/lms_certificate/lms_certificate.py index ab580416..d43699ba 100644 --- a/lms/lms/doctype/lms_certificate/lms_certificate.py +++ b/lms/lms/doctype/lms_certificate/lms_certificate.py @@ -70,6 +70,12 @@ class LMSCertificate(Document): ) +def has_website_permission(doc, ptype, user, verbose=False): + if ptype in ["read", "print"]: + return True + return False + + @frappe.whitelist() def create_certificate(course): certificate = is_certified(course) diff --git a/lms/page_renderers.py b/lms/page_renderers.py index 55ac47c9..e6f687e2 100644 --- a/lms/page_renderers.py +++ b/lms/page_renderers.py @@ -107,3 +107,34 @@ def render_portal_page(path, **kwargs): frappe.form_dict.update(kwargs) page = TemplatePage(path) return page.render() + + +class CoursePage(BaseRenderer): + def __init__(self, path, http_status_code): + super().__init__(path, http_status_code) + self.renderer = None + + def can_render(self): + return self.path.startswith("course") + + def render(self): + if "learn" in self.path: + prefix = self.path.split("/learn")[0] + course_name = prefix.split("/")[1] + lesson_index = self.path.split("/learn/")[1] + chapter_number = lesson_index.split(".")[0] + lesson_number = lesson_index.split(".")[1] + + frappe.flags.redirect_location = ( + f"/lms/courses/{course_name}/learn/{chapter_number}-{lesson_number}" + ) + return RedirectPage(self.path).render() + + elif len(self.path.split("/")) > 1: + course_name = self.path.split("/")[1] + frappe.flags.redirect_location = f"/lms/courses/{course_name}" + return RedirectPage(self.path).render() + + else: + frappe.flags.redirect_location = "/lms/courses" + return RedirectPage(self.path).render() diff --git a/lms/public/frontend/index.html b/lms/public/frontend/index.html index 33fa1547..db378895 100644 --- a/lms/public/frontend/index.html +++ b/lms/public/frontend/index.html @@ -4,7 +4,7 @@ - Frappe UI App + Frappe Learning @@ -15,10 +15,10 @@ - - - - + + + +