From f1b383f0b727883cad6b0c5f14174aacebc4f90a Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Tue, 22 Apr 2025 15:02:21 +0530 Subject: [PATCH] fix: check persona_captured after details get saved --- frappe-ui | 2 +- frontend/src/pages/Courses.vue | 17 +++++++-- frontend/src/pages/PersonaForm.vue | 27 ++++++++++++-- lms/lms/api.py | 36 +++++++++---------- .../doctype/lms_settings/lms_settings.json | 29 +++++---------- 5 files changed, 66 insertions(+), 45 deletions(-) diff --git a/frappe-ui b/frappe-ui index 29307e4f..8cd9b06a 160000 --- a/frappe-ui +++ b/frappe-ui @@ -1 +1 @@ -Subproject commit 29307e4fffaacdbb3d9c5d95c5270b2f245a5607 +Subproject commit 8cd9b06a5ed50dc181d9672b2fe84c1594b52b48 diff --git a/frontend/src/pages/Courses.vue b/frontend/src/pages/Courses.vue index d46d96ab..61f514f5 100644 --- a/frontend/src/pages/Courses.vue +++ b/frontend/src/pages/Courses.vue @@ -162,8 +162,21 @@ const setCategories = (data) => { } } -const identifyUserPersona = () => { - if (user.data?.is_system_manager) { +const isPersonaCaptured = async () => { + let persona = await call('frappe.client.get_single_value', { + doctype: 'LMS Settings', + field: 'persona_captured', + }) + return persona +} + +const identifyUserPersona = async () => { + let personaCaptured = await isPersonaCaptured() + if ( + user.data?.is_system_manager && + !user.data?.developer_mode && + !personaCaptured + ) { call('frappe.client.get_count', { doctype: 'LMS Course', }).then((data) => { diff --git a/frontend/src/pages/PersonaForm.vue b/frontend/src/pages/PersonaForm.vue index c2300d4d..0ba7cf4d 100644 --- a/frontend/src/pages/PersonaForm.vue +++ b/frontend/src/pages/PersonaForm.vue @@ -1,6 +1,6 @@ @@ -81,6 +87,7 @@ import { sessionStore } from '@/stores/session' const user = inject('$user') const router = useRouter() const { brand } = sessionStore() +console.log(user.data?.sitename) const persona = reactive({ role: null, @@ -90,12 +97,28 @@ const persona = reactive({ }) const submitPersona = () => { - call('lms.lms.api.capture_user_persona', { + let responses = { site: user.data?.sitename, role: persona.role, no_of_students: persona.noOfStudents, use_case: persona.useCase, frappe_products: persona.frappeProducts, + } + call('lms.lms.api.capture_user_persona', { + responses: JSON.stringify(responses), + }).then(() => { + router.push({ + name: 'Courses', + }) + }) +} + +const skipPersonaForm = () => { + call('frappe.client.set_value', { + doctype: 'LMS Settings', + name: null, + fieldname: 'persona_captured', + value: 1, }).then(() => { router.push({ name: 'Courses', diff --git a/lms/lms/api.py b/lms/lms/api.py index 229e9281..1a133532 100644 --- a/lms/lms/api.py +++ b/lms/lms/api.py @@ -2,7 +2,6 @@ """ import json -import requests import frappe import zipfile import os @@ -185,9 +184,10 @@ def get_user_info(): ) user.is_fc_site = is_fc_site() user.is_system_manager = "System Manager" in user.roles + user.sitename = frappe.local.site + user.developer_mode = frappe.conf.developer_mode if user.is_fc_site and user.is_system_manager: user.site_info = current_site_info() - user.sitename = frappe.local.site return user @@ -679,13 +679,13 @@ def get_categories(doctype, filters): @frappe.whitelist() def get_members(start=0, search=""): """Get members for the given search term and start index. - Args: start (int): Start index for the query. + Args: start (int): Start index for the query. <<<<<<< HEAD - search (str): Search term to filter the results. + search (str): Search term to filter the results. ======= - search (str): Search term to filter the results. + search (str): Search term to filter the results. >>>>>>> 4869bba7bbb2fb38477d6fc29fb3b5838e075577 - Returns: List of members. + Returns: List of members. """ filters = {"enabled": 1, "name": ["not in", ["Administrator", "Guest"]]} @@ -1393,18 +1393,14 @@ def add_an_evaluator(email): @frappe.whitelist() -def capture_user_persona(site, role, number_of_students, use_case, frappe_products): - requests.post( - "https://school.frappe.io/api/method/capture_persona", - json={ - "site": site, - "role": role, - "number_of_students": number_of_students, - "use_case": use_case, - "frappe_products": frappe_products, - }, - headers={ - "Authorization": f"token {frappe.local.conf.frappe_token}", - "Content-Type": "application/json", - }, +def capture_user_persona(responses): + frappe.only_for("System Manager") + data = frappe.parse_json(responses) + data = json.dumps(data) + response = frappe.integrations.utils.make_post_request( + "https://school.frappe.io/api/method/capture-persona", + data={"response": data}, ) + if response.get("message").get("name"): + frappe.db.set_single_value("LMS Settings", "persona_captured", True) + return response diff --git a/lms/lms/doctype/lms_settings/lms_settings.json b/lms/lms/doctype/lms_settings/lms_settings.json index 772a6fbe..597fee53 100644 --- a/lms/lms/doctype/lms_settings/lms_settings.json +++ b/lms/lms/doctype/lms_settings/lms_settings.json @@ -8,6 +8,7 @@ "general_tab", "default_home", "send_calendar_invite_for_evaluations", + "persona_captured", "column_break_zdel", "allow_guest_access", "enable_learning_paths", @@ -60,10 +61,7 @@ "column_break_uwsp", "payment_reminder_template", "seo_tab", - "meta_description", - "meta_image", - "column_break_xijv", - "meta_keywords" + "meta_description" ], "fields": [ { @@ -375,28 +373,19 @@ "label": "Meta Description" }, { - "description": "This image will be shown on lists and pages that don't have an image by default", - "fieldname": "meta_image", - "fieldtype": "Attach Image", - "label": "Meta Image" - }, - { - "description": "Common keywords that will be used for all pages", - "fieldname": "meta_keywords", - "fieldtype": "Small Text", - "label": "Meta Keywords" - }, - { - "fieldname": "column_break_xijv", - "fieldtype": "Column Break" + "default": "0", + "fieldname": "persona_captured", + "fieldtype": "Check", + "label": "Persona Captured", + "read_only": 1 } ], "grid_page_length": 50, "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2025-04-19 12:19:24.037931", - "modified_by": "sayali@frappe.io", + "modified": "2025-04-22 14:34:19.656896", + "modified_by": "Administrator", "module": "LMS", "name": "LMS Settings", "owner": "Administrator",