From 023dbedd198b07fbea96162ec6eb31705c5a2420 Mon Sep 17 00:00:00 2001 From: venkataakhil Date: Fri, 18 Aug 2023 18:59:32 +0530 Subject: [PATCH] Publish v2 verion and global custom button fix --- smart_service/apis/master_api.py | 11 ++-- smart_service/apis/v2/master.py | 33 ++++++++++ .../doctype/feature_finder/feature_finder.js | 33 ++++++++-- .../feature_finder/feature_finder.json | 10 +++- .../doctype/feature_finder/feature_finder.py | 19 ++++-- .../module_publish_mapping.json | 4 +- .../transactions/doctype/publish/publish.js | 9 ++- .../transactions/doctype/publish/publish.py | 60 ++++++++++++++++--- 8 files changed, 152 insertions(+), 27 deletions(-) diff --git a/smart_service/apis/master_api.py b/smart_service/apis/master_api.py index 0d2b9fe..c1e8e60 100644 --- a/smart_service/apis/master_api.py +++ b/smart_service/apis/master_api.py @@ -360,12 +360,13 @@ def variant(LSD, language): case when active_status= 'Active' Then true else false end as active_status FROM `tabVariant Mapping` where modified >='{LSD}';''', as_dict=1) for d in data: - modules = frappe.db.sql(f''' select automotive_system as 'Automotive System',tsb as 'TSB',fsa as 'FSA',tekalert as 'TEKalert', + modules = frappe.db.sql(f'''select automotive_system as 'Automotive System',tsb as 'TSB',fsa as 'FSA',tekalert as 'TEKalert', feature_finder as 'Feature Finder',repairservice_check_sheet as 'Repair/Service Check Sheet', - mahindra_special_tool_information as 'Mahindra Special Tool Information',training_information as 'Training Information', - qwik_service as 'QWIK Service',pdi_inspection as 'PDI Inspection', + mahindra_special_tool_information as 'Mahindra Special Tool Information',training_information as + 'Training Information',qwik_service as 'QWIK Service',pdi_inspection as 'PDI Inspection', torque_information_nm as 'Torque Information NM' - FROM `tabModule Publish Mapping` where variant="{d['variant_name']}" ;''', as_dict=1) + FROM `tabModule Publish Mapping` where vehicle= '{d['vehicle']}' and variant="{d['variant_name']}" ;''', + as_dict=1) if modules: d['modules'] = [{'title': k, 'active_status': v, 'app_menu_id': frappe.db.sql(f'''select app_menu_id from `tabModule Master` where module_name = '{k}' ;''', as_dict=1)[0]['app_menu_id']} @@ -401,7 +402,7 @@ def app_modules(LSD): @frappe.whitelist(methods=["POST"], allow_guest=1) -def role_mapping(): +def role_mapping(): req = json.loads(frappe.request.data) try: lsdt = req['LSD'] diff --git a/smart_service/apis/v2/master.py b/smart_service/apis/v2/master.py index 365b6de..f573eaa 100644 --- a/smart_service/apis/v2/master.py +++ b/smart_service/apis/v2/master.py @@ -232,3 +232,36 @@ def get_special_tool_information(vehicle): return True, special_tool_details except Exception as e: return False, e + + +@frappe.whitelist(allow_guest=1) +def update_publish_mapping(vehicle, variant, language, module): + frappe.set_user('Administrator') + pub_data = frappe.db.get_list('Module Publish Mapping', filters={ + "vehicle": vehicle, + "variant": variant, + "language": language + }, fields=['name']) + + if pub_data: + doc = frappe.get_doc('Module Publish Mapping', pub_data[0]['name']) + else: + doc = frappe.get_doc({ + 'doctype': 'Module Publish Mapping', + "vehicle": vehicle, + "variant": variant, + "language": language + }) + if module == 'Automotive System': + doc.automotive_system = 1 + doc.tsb = 1 + doc.fsa = 1 + doc.tekalert = 1 + + elif module == 'Feature Finder': + doc.feature_finder = 1 + + elif module == 'Repair service': + doc.repairservice_check_sheet = 1 + doc.save() + return 1 diff --git a/smart_service/phase_2/doctype/feature_finder/feature_finder.js b/smart_service/phase_2/doctype/feature_finder/feature_finder.js index 3cdb9dc..0586867 100644 --- a/smart_service/phase_2/doctype/feature_finder/feature_finder.js +++ b/smart_service/phase_2/doctype/feature_finder/feature_finder.js @@ -15,6 +15,7 @@ frappe.ui.form.on('Feature Finder', { } set_display_order(frm) show_images(frm) + }, onload: function (frm) { if (!frm.doc.feature_finder_images){ @@ -192,16 +193,28 @@ function custom_tab_html(frm) { res.append(``) + + if(frm.doc.tab_ref){ + $('.nav').find('.nav-link').removeClass('active') + $('.nav').find('#'+frm.doc.tab_ref).addClass('active') + } + var specification = "" var feature_finder_images = "" var feature_finder_content = "" if (frm.doc.specification && frm.doc.feature_finder_images && frm.doc.feature_finder_content){ + specification = frm.doc.specification.filter(o => o.feature_type == "SOP") feature_finder_images = frm.doc.feature_finder_images.filter(o => o.feature_type == "SOP") feature_finder_content = frm.doc.feature_finder_content.filter(o => o.feature_type == "SOP") + if(frm.doc.tab_ref !='SOP'){ + specification = frm.doc.specification.filter(o => o.post_vin_cutoff_name == frm.doc.tab_ref) + feature_finder_images = frm.doc.feature_finder_images.filter(o => o.post_vin_cutoff_name == frm.doc.tab_ref) + feature_finder_content = frm.doc.feature_finder_content.filter(o => o.post_vin_cutoff_name == frm.doc.tab_ref) + } specification.sort((a, b) => a.display_order - b.display_order); feature_finder_images.sort((a, b) => a.display_order - b.display_order); feature_finder_content.sort((a, b) => a.display_order - b.display_order); @@ -213,11 +226,17 @@ function custom_tab_html(frm) { var content_dialog_value = "" var nav_spec = {} nav_spec.feature_type = "SOP" + if(frm.doc.tab_ref !='SOP'){ + nav_spec.feature_type = "Post Vin CutOff" + nav_spec.post_vin_cutoff_name = frm.doc.tab_ref + } nav_spec.active_status = "Active" all_tabs() $('.main').find('.nav-link').click(function (event) { if ($(this)[0].id == "SOP") { + frm.doc.tab_ref = "SOP" + cur_frm.refresh_fields("tab_ref") nav_spec.feature_type = "SOP" nav_spec.post_vin_cutoff_name = "" specification = frm.doc.specification.filter(o => o.feature_type == $(this)[0].id) @@ -231,6 +250,8 @@ function custom_tab_html(frm) { } else { nav_spec.feature_type = "Post Vin CutOff" + frm.doc.tab_ref = $(this)[0].id + cur_frm.refresh_fields("tab_ref") nav_spec.post_vin_cutoff_name = $(this)[0].id specification = frm.doc.specification.filter(o => o.post_vin_cutoff_name == $(this)[0].id) feature_finder_images = frm.doc.feature_finder_images.filter(o => o.post_vin_cutoff_name == $(this)[0].id) @@ -241,7 +262,7 @@ function custom_tab_html(frm) { feature_finder_content.sort((a, b) => a.display_order - b.display_order); } - + all_tabs() }) @@ -790,10 +811,12 @@ function custom_tab_html(frm) { method: "smart_service.phase_2.doctype.feature_finder.feature_finder.insert_spec_data", args: { doc_name: frm.doc.name, - values: values + values: values, + tab_ref:frm.doc.tab_ref }, callback: function (r) { if (r.message.status == "success") { + cur_frm.reload_doc() cur_frm.refresh() } @@ -858,7 +881,8 @@ function custom_tab_html(frm) { method: "smart_service.phase_2.doctype.feature_finder.feature_finder.insert_image_data", args: { doc_name: frm.doc.name, - values: values + values: values, + tab_ref:frm.doc.tab_ref }, callback: function (r) { if (r.message.status == "success") { @@ -927,7 +951,8 @@ function custom_tab_html(frm) { method: "smart_service.phase_2.doctype.feature_finder.feature_finder.insert_content_data", args: { doc_name: frm.doc.name, - values: values + values: values, + tab_ref:frm.doc.tab_ref }, callback: function (r) { if (r.message.status == "success") { diff --git a/smart_service/phase_2/doctype/feature_finder/feature_finder.json b/smart_service/phase_2/doctype/feature_finder/feature_finder.json index 71425cc..b4a10cc 100644 --- a/smart_service/phase_2/doctype/feature_finder/feature_finder.json +++ b/smart_service/phase_2/doctype/feature_finder/feature_finder.json @@ -28,7 +28,8 @@ "feature_finder_images", "feature_finder_content", "vehicle_id", - "variant_id" + "variant_id", + "tab_ref" ], "fields": [ { @@ -186,11 +187,16 @@ { "fieldname": "section_break_o8kze", "fieldtype": "Section Break" + }, + { + "fieldname": "tab_ref", + "fieldtype": "Data", + "label": "Tab Ref" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-08-16 18:15:43.233327", + "modified": "2023-08-18 16:26:34.470582", "modified_by": "Administrator", "module": "Phase-2", "name": "Feature Finder", diff --git a/smart_service/phase_2/doctype/feature_finder/feature_finder.py b/smart_service/phase_2/doctype/feature_finder/feature_finder.py index 42f9acb..e69f9cf 100644 --- a/smart_service/phase_2/doctype/feature_finder/feature_finder.py +++ b/smart_service/phase_2/doctype/feature_finder/feature_finder.py @@ -97,12 +97,15 @@ def get_list_data(name, val): @frappe.whitelist() -def insert_spec_data(doc_name, values): +def insert_spec_data(doc_name, values,tab_ref): try: val = json.loads(values) get_count = frappe.db.sql(f"""select name from `tabFeature Finder Specification` where parent='{doc_name}' and feature_type='{val.get('feature_type')}'""",as_dict=1) get_count = len(get_count)+1 - frappe.log_error("displayorder",str(get_count)) + result = frappe.get_doc("Feature Finder", doc_name) + result.tab_ref = tab_ref + result.save() + frappe.db.commit() if val.get('name') != None: doc = frappe.get_doc("Feature Finder Specification", val['name']) doc.specification = val.get('specification') @@ -139,11 +142,15 @@ def delete_spec_data(values): @frappe.whitelist() -def insert_image_data(doc_name, values): +def insert_image_data(doc_name, values,tab_ref): try: val = json.loads(values) get_count = frappe.db.sql(f"""select name from `tabFeature Finder Images` where parent='{doc_name}' and feature_type='{val.get('feature_type')}'""",as_dict=1) get_count = len(get_count)+1 + result = frappe.get_doc("Feature Finder", doc_name) + result.tab_ref = tab_ref + result.save() + frappe.db.commit() if val.get('name') != None: doc = frappe.get_doc("Feature Finder Images", val['name']) doc.image = val.get('image') @@ -180,11 +187,15 @@ def delete_image_data(values): @frappe.whitelist() -def insert_content_data(doc_name, values): +def insert_content_data(doc_name, values,tab_ref): try: val = json.loads(values) get_count = frappe.db.sql(f"""select name from `tabFeature Finder Content` where parent='{doc_name}' and feature_type='{val.get('feature_type')}'""",as_dict=1) get_count = len(get_count)+1 + result = frappe.get_doc("Feature Finder", doc_name) + result.tab_ref = tab_ref + result.save() + frappe.db.commit() if val.get('name') != None: doc = frappe.get_doc("Feature Finder Content", val['name']) doc.content = val.get('content') diff --git a/smart_service/phase_2/doctype/module_publish_mapping/module_publish_mapping.json b/smart_service/phase_2/doctype/module_publish_mapping/module_publish_mapping.json index b0debfe..74c8639 100644 --- a/smart_service/phase_2/doctype/module_publish_mapping/module_publish_mapping.json +++ b/smart_service/phase_2/doctype/module_publish_mapping/module_publish_mapping.json @@ -1,7 +1,7 @@ { "actions": [], "allow_rename": 1, - "autoname": "format:{variant}-{language}", + "autoname": "format:{vehicle}-{variant}-{language}", "creation": "2023-08-07 12:44:24.978007", "doctype": "DocType", "editable_grid": 1, @@ -107,7 +107,7 @@ ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-08-18 16:49:35.315359", + "modified": "2023-08-18 18:04:39.185507", "modified_by": "Administrator", "module": "Phase-2", "name": "Module Publish Mapping", diff --git a/smart_service/transactions/doctype/publish/publish.js b/smart_service/transactions/doctype/publish/publish.js index 9e8bee9..059d6b7 100644 --- a/smart_service/transactions/doctype/publish/publish.js +++ b/smart_service/transactions/doctype/publish/publish.js @@ -342,7 +342,7 @@ frappe.ui.form.on('Publish', { } - if (frm.doc.docstatus == 1 && frm.doc.publish_status == 'To Publish' && !frm.is_new() && frm.doc.publish_type != "Global" && frm.doc.publish_module != 'Automotive System') { + if (frm.doc.docstatus == 1 && frm.doc.publish_status == 'To Publish' && !frm.is_new() && frm.doc.publish_module != 'Automotive System') { debugger frappe.call({ method: "smart_service.transactions.doctype.publish.publish.cal_ver_new_module", @@ -357,6 +357,13 @@ frappe.ui.form.on('Publish', { if (r.message) { frm.set_value('version', r.message); cur_frm.refresh_field('version') + frm.page.clear_primary_action("Global Publish"); + // if(frm.doc.publish_type == 'Internal'){ + // debugger + // frm.page.clear_primary_action("Global Publish"); + + // } + frm.set_value('actual_published_date', frappe.datetime.nowdate()); } diff --git a/smart_service/transactions/doctype/publish/publish.py b/smart_service/transactions/doctype/publish/publish.py index 1f7f684..299bd20 100644 --- a/smart_service/transactions/doctype/publish/publish.py +++ b/smart_service/transactions/doctype/publish/publish.py @@ -80,6 +80,15 @@ class Publish(Document): update_repair_published_docs(self) update_publish_status = frappe.db.sql( """update `tabPublish` set publish_status='Published' where name='{0}'""".format(self.name)) + frappe.log_error(str(self.variant_mapping_details)) + variant = self.variant_mapping_details.split('/n') + frappe.log_error('variant', str(variant)) + + # for v in variant: + # frappe.log_error('v', str(v)) + # if v: + # update_publish_mapping( + # self.vehicle, v, self.language, self.publish_module) def onload1(self): current_db_name = frappe.conf.get("db_name") @@ -190,6 +199,37 @@ def update_procedure(vehicle, lang, publish_type, doc): # Generate Publish versions +def update_publish_mapping(vehicle, variant, language, module): + frappe.set_user('Administrator') + pub_data = frappe.db.get_list('Module Publish Mapping', filters={ + "vehicle": vehicle, + "variant": variant, + "language": language + }, fields=['name']) + + if pub_data: + doc = frappe.get_doc('Module Publish Mapping', pub_data[0]['name']) + else: + doc = frappe.get_doc({ + 'doctype': 'Module Publish Mapping', + "vehicle": vehicle, + "variant": variant, + "language": language + }) + if module == 'Automotive System': + doc.automotive_system = 1 + doc.tsb = 1 + doc.fsa = 1 + doc.tekalert = 1 + + elif module == 'Feature Finder': + doc.feature_finder = 1 + + elif module == 'Repair service': + doc.repairservice_check_sheet = 1 + doc.save() + + def update_publish_status(self): try: update_status = frappe.db.sql( @@ -287,7 +327,7 @@ def generate_global_publish(name): "vehicle": res.vehicle, "publish_type": "Global", "language": res.language, - "publish_status": "To Publish", + "publish_status": 'To Publish', "release_description": res.release_description, "publish_module": res.publish_module, "feature_finder_publish": res.feature_finder_publish, @@ -651,8 +691,9 @@ def feature_finder_publish(vehicle=None, vehicle_id=None, feature_finder_tmp.append( feature_finder['data'][0]) - repair_checksheet_tmp = get_latest_data( + feature_finder_tmp = get_latest_data( {'data': published_data['data']}, {'data': feature_finder_tmp}) + frappe.msgprint(str(feature_finder_tmp)) else: @@ -672,15 +713,16 @@ def feature_finder_publish(vehicle=None, vehicle_id=None, {'data': feature_finder_tmp}, {'data': []}) # if publish_feature_finder == 1: - """ Save publish file """ - vehicle_data['data'] = feature_finder_tmp + """ Save publish file """ + vehicle_data['data'] = feature_finder_tmp + frappe.msgprint(str(file_path)) - with open(file_path, 'w') as outfile: - outfile.write(json.dumps(vehicle_data, indent=4, default=str)) - logger.info( - f'Repair Checksheet Data Append Start::{vehicle}-{language}-{publish_type}') + with open(file_path, 'w') as outfile: + outfile.write(json.dumps(vehicle_data, indent=4, default=str)) + logger.info( + f'Repair Checksheet Data Append Start::{vehicle}-{language}-{publish_type}') - return 1, file_path + return 1, file_path except Exception as e: logger.info(