From 0356b8e2d2d80b1714ce3e1c229e98105cd22c58 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Mon, 12 Dec 2022 13:31:11 +0530 Subject: [PATCH] feat: pages to navbar settings --- lms/install.py | 43 ------------------- .../doctype/lms_settings/lms_settings.json | 13 ++++-- lms/lms/doctype/lms_settings/lms_settings.py | 37 +++++++++++++++- lms/patches.txt | 2 +- .../v0_0/change_course_creation_settings.py | 6 +++ lms/patches/v0_0/change_role_names.py | 7 ++- lms/patches/v0_0/skill_to_user_skill.py | 1 + 7 files changed, 59 insertions(+), 50 deletions(-) create mode 100644 lms/patches/v0_0/change_course_creation_settings.py diff --git a/lms/install.py b/lms/install.py index 10ee1568..c70ab1f2 100644 --- a/lms/install.py +++ b/lms/install.py @@ -2,10 +2,6 @@ import frappe from frappe.desk.page.setup_wizard.setup_wizard import add_all_roles_to -def after_install(): - add_pages_to_nav() - - def after_sync(): create_lms_roles() set_default_home() @@ -95,42 +91,3 @@ def delete_custom_fields(): for field in fields: frappe.db.delete("Custom Field", {"fieldname": field}) frappe.db.commit() - - -def add_pages_to_nav(): - pages = [ - {"label": "Courses", "url": "/courses", "parent": "Explore", "idx": 2}, - {"label": "Classes", "url": "/classes", "parent": "Explore", "idx": 3}, - {"label": "Statistics", "url": "/statistics", "parent": "Explore", "idx": 4}, - {"label": "Jobs", "url": "/jobs", "parent": "Explore", "idx": 5}, - {"label": "People", "url": "/community", "parent": "Explore", "idx": 6}, - ] - - if not frappe.db.exists("Top Bar Item", {"label": "Explore"}): - frappe.get_doc( - { - "doctype": "Top Bar Item", - "label": "Explore", - "parent": "Website Settings", - "parenttype": "Website Settings", - "parentfield": "top_bar_items", - "idx": 1, - } - ).save() - - for page in pages: - if not frappe.db.exists( - "Top Bar Item", {"url": ["like", "%" + page.get("url") + "%"]} - ): - frappe.get_doc( - { - "doctype": "Top Bar Item", - "label": page.get("label"), - "url": page.get("url"), - "parent_label": page.get("parent"), - "idx": page.get("idx"), - "parent": "Website Settings", - "parenttype": "Website Settings", - "parentfield": "top_bar_items", - } - ).save() diff --git a/lms/lms/doctype/lms_settings/lms_settings.json b/lms/lms/doctype/lms_settings/lms_settings.json index d987405c..5f3b63ed 100644 --- a/lms/lms/doctype/lms_settings/lms_settings.json +++ b/lms/lms/doctype/lms_settings/lms_settings.json @@ -7,10 +7,11 @@ "field_order": [ "search_placeholder", "portal_course_creation", - "force_profile_completion", + "add_to_navbar", "column_break_2", "custom_certificate_template", "livecode_url", + "force_profile_completion", "signup_settings_section", "terms_of_use", "terms_page", @@ -137,12 +138,18 @@ "fieldtype": "Link", "label": "Custom Certificate Template", "options": "Web Template" + }, + { + "default": "0", + "fieldname": "add_to_navbar", + "fieldtype": "Check", + "label": "Add LMS pages to navbar" } ], "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2022-12-01 15:13:39.901611", + "modified": "2022-12-12 11:36:16.162795", "modified_by": "Administrator", "module": "LMS", "name": "LMS Settings", @@ -163,4 +170,4 @@ "sort_order": "DESC", "states": [], "track_changes": 1 -} +} \ No newline at end of file diff --git a/lms/lms/doctype/lms_settings/lms_settings.py b/lms/lms/doctype/lms_settings/lms_settings.py index d8afde6e..761eed48 100644 --- a/lms/lms/doctype/lms_settings/lms_settings.py +++ b/lms/lms/doctype/lms_settings/lms_settings.py @@ -7,4 +7,39 @@ from frappe.model.document import Document class LMSSettings(Document): - pass + + pages = [ + {"label": "Explore", "idx": 1}, + {"label": "Courses", "url": "/courses", "parent": "Explore", "idx": 2}, + {"label": "Classes", "url": "/classes", "parent": "Explore", "idx": 3}, + {"label": "Statistics", "url": "/statistics", "parent": "Explore", "idx": 4}, + {"label": "Jobs", "url": "/jobs", "parent": "Explore", "idx": 5}, + {"label": "People", "url": "/community", "parent": "Explore", "idx": 6}, + ] + + def on_update(self): + self.update_navbar() + + def update_navbar(self): + for page in self.pages: + filters = frappe._dict() + if page.get("url"): + filters["url"] = ["like", "%" + page.get("url") + "%"] + else: + filters["label"] = page.get("label") + + if self.add_to_navbar and not frappe.db.exists("Top Bar Item", filters): + frappe.get_doc( + { + "doctype": "Top Bar Item", + "label": page.get("label"), + "url": page.get("url"), + "parent_label": page.get("parent"), + "idx": page.get("idx"), + "parent": "Website Settings", + "parenttype": "Website Settings", + "parentfield": "top_bar_items", + } + ).save() + elif not self.add_to_navbar and frappe.db.exists("Top Bar Item", filters): + frappe.db.delete("Top Bar Item", filters) diff --git a/lms/patches.txt b/lms/patches.txt index 99e8db2e..10ec7d55 100644 --- a/lms/patches.txt +++ b/lms/patches.txt @@ -36,8 +36,8 @@ lms.patches.v0_0.set_dashboard #11-10-2022 lms.patches.v0_0.set_courses_page_as_home lms.patches.v0_0.set_member_in_progress #09-11-2022 lms.patches.v0_0.convert_progress_to_float -lms.patches.v0_0.add_pages_to_nav #25-11-2022 lms.patches.v0_0.change_role_names lms.patches.v0_0.quiz_submission_result lms.patches.v0_0.skill_to_user_skill lms.patches.v0_0.rename_instructor_role +lms.patches.v0_0.change_course_creation_settings #12-12-2022 diff --git a/lms/patches/v0_0/change_course_creation_settings.py b/lms/patches/v0_0/change_course_creation_settings.py new file mode 100644 index 00000000..21ddc931 --- /dev/null +++ b/lms/patches/v0_0/change_course_creation_settings.py @@ -0,0 +1,6 @@ +import frappe + +def execute(): + value = frappe.db.get_single_value("LMS Settings", "portal_course_creation") + if value == "Course Instructor Role": + frappe.db.set_value("LMS Settings", None, "portal_course_creation", "Course Creator Role") diff --git a/lms/patches/v0_0/change_role_names.py b/lms/patches/v0_0/change_role_names.py index 3e01336f..7dcbf4a0 100644 --- a/lms/patches/v0_0/change_role_names.py +++ b/lms/patches/v0_0/change_role_names.py @@ -2,5 +2,8 @@ import frappe def execute(): - frappe.rename_doc("Role", "Course Instructor", "Instructor") - frappe.rename_doc("Role", "Course Moderator", "Moderator") + if frappe.db.exists("Role", "Course Instructor"): + frappe.rename_doc("Role", "Course Instructor", "Instructor") + + if frappe.db.exists("Role", "Course Moderator"): + frappe.rename_doc("Role", "Course Moderator", "Moderator") diff --git a/lms/patches/v0_0/skill_to_user_skill.py b/lms/patches/v0_0/skill_to_user_skill.py index 14d1b4be..ec9fb26f 100644 --- a/lms/patches/v0_0/skill_to_user_skill.py +++ b/lms/patches/v0_0/skill_to_user_skill.py @@ -4,5 +4,6 @@ import frappe def execute(): frappe.reload_doc("lms", "doctype", "user_skill") skills = frappe.get_all("Skill", pluck="name") + for skill in skills: frappe.get_doc({"doctype": "User Skill", "skill": skill}).save()