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 e97154d..92f1775 100644 --- a/smart_service/phase_2/doctype/feature_finder/feature_finder.js +++ b/smart_service/phase_2/doctype/feature_finder/feature_finder.js @@ -985,7 +985,10 @@ function custom_tab_html(frm) { }, callback: function (r) { if (r.message.status == "success") { - frappe.msgprint("Submited data will be auto saved") + frappe.show_alert({ + message: __('Submited data will be auto saved'), + indicator: 'green' + }, 15); cur_frm.reload_doc() cur_frm.refresh() } @@ -1077,7 +1080,10 @@ function custom_tab_html(frm) { }, callback: function (r) { if (r.message.status == "success") { - frappe.msgprint("Submited data will be auto saved") + frappe.show_alert({ + message: __('Submited data will be auto saved'), + indicator: 'green' + }, 15); cur_frm.reload_doc() cur_frm.refresh() } @@ -1154,7 +1160,10 @@ function custom_tab_html(frm) { }, callback: function (r) { if (r.message.status == "success") { - frappe.msgprint("Submited data will be auto saved") + frappe.show_alert({ + message: __('Submited data will be auto saved'), + indicator: 'green' + }, 15); cur_frm.reload_doc() cur_frm.refresh() } 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 7a66d7f..3765a23 100644 --- a/smart_service/phase_2/doctype/feature_finder/feature_finder.py +++ b/smart_service/phase_2/doctype/feature_finder/feature_finder.py @@ -203,7 +203,7 @@ def delete_image_data(values,doc_name): @frappe.whitelist() -def insert_content_data(doc_name, values, tab_ref): +def insert_content_data(doc_name, values, tab_ref=None): try: val = json.loads(values) get_count = frappe.db.sql("""select name from `tabFeature Finder Content` where parent='%s' and diff --git a/smart_service/phase_2/doctype/qwik_service/qwik_service.js b/smart_service/phase_2/doctype/qwik_service/qwik_service.js index d8e3d47..4e29861 100644 --- a/smart_service/phase_2/doctype/qwik_service/qwik_service.js +++ b/smart_service/phase_2/doctype/qwik_service/qwik_service.js @@ -412,7 +412,7 @@ function custom_tab_html(frm){ function set_display_order(frm){ - if (frm.is_new()) { + if (frm.is_new()) { frm.set_df_property('display_order', 'read_only', 1); } else { frm.set_df_property('display_order', 'read_only', 0); diff --git a/smart_service/phase_2/doctype/qwik_service/qwik_service.py b/smart_service/phase_2/doctype/qwik_service/qwik_service.py index 989709a..ad3b64c 100644 --- a/smart_service/phase_2/doctype/qwik_service/qwik_service.py +++ b/smart_service/phase_2/doctype/qwik_service/qwik_service.py @@ -16,10 +16,10 @@ class QwikService(Document): for d in check_exe: self.display_order = d['display_order'] self.active_status = d['active_status'] - if not check_exe: + if not check_exe: if self.language != "en": frappe.throw("First language will be english only") - count = frappe.db.sql('''select max(my_id) as max_count from `tabSpecial Tool Information`;''') + count = frappe.db.sql('''select max(my_id) as max_count from `tabQwik Service`;''') if count[0][0] is not None: self.my_id = count[0][0] + 1 else: diff --git a/smart_service/phase_2/doctype/torque_category/__init__.py b/smart_service/phase_2/doctype/torque_manual/__init__.py similarity index 100% rename from smart_service/phase_2/doctype/torque_category/__init__.py rename to smart_service/phase_2/doctype/torque_manual/__init__.py diff --git a/smart_service/phase_2/doctype/torque_master/test_torque_master.py b/smart_service/phase_2/doctype/torque_manual/test_torque_manual.py similarity index 75% rename from smart_service/phase_2/doctype/torque_master/test_torque_master.py rename to smart_service/phase_2/doctype/torque_manual/test_torque_manual.py index cd2d49a..9ddd172 100644 --- a/smart_service/phase_2/doctype/torque_master/test_torque_master.py +++ b/smart_service/phase_2/doctype/torque_manual/test_torque_manual.py @@ -4,5 +4,5 @@ # import frappe import unittest -class TestTorqueMaster(unittest.TestCase): +class TestTorqueManual(unittest.TestCase): pass diff --git a/smart_service/phase_2/doctype/torque_manual/torque_manual.js b/smart_service/phase_2/doctype/torque_manual/torque_manual.js new file mode 100644 index 0000000..334fb3f --- /dev/null +++ b/smart_service/phase_2/doctype/torque_manual/torque_manual.js @@ -0,0 +1,84 @@ +// Copyright (c) 2023, Hard n Soft Technologies Pvt Ltd and contributors +// For license information, please see license.txt +var vehicle_count = 0; +var original_display_order = 0; + +frappe.ui.form.on('Torque Manual', { + refresh: function(frm) { + frm.set_query("variant", function() { + return { + "filters": { + "active_status": "Active", + } + }; + }); + set_display_order(frm) + + }, + onload:function(frm){ + set_display_order(frm) + }, + validate:function(frm){ + cur_frm.refresh_fields("display_order") + if (frm.doc.display_order && frm.doc.name && !frm.is_new()) { + //***check if there is same display_order + frappe.db.get_list('Torque Manual', { + fields: ['display_order', 'name'], + filters: { + display_order: frm.doc.display_order, + name: ["!=", frm.doc.name], + variant: frm.doc.variant, + language: frm.doc.language + } + }).then(records => { + console.log(records) + if (records.length) { + frappe.db.set_value('Torque Manual', records[0].name, { + display_order: original_display_order + }).then(r => { + // console.log("display",str(r)) + let doc = r.message; + frappe.show_alert({ + message: __('Swapped display order with: ' + records[0].name), + indicator: 'green' + }, 5); + }); + } else { + // if (frm.doc.display_order >= vehicle_count) { + // let display_vehicle_count = vehicle_count - 1; + // msgprint('There are only ' + display_vehicle_count + " " + frm.doc.doctype); + // frappe.validated = false; + // } + } + }); + } + }, + after_save: function (frm) { + cur_frm.refresh_fields("display_order") + }, + vehicle: function(frm){ + set_display_order(frm) + }, +}); +function set_display_order(frm){ + + if (frm.is_new()) { + frm.set_df_property('display_order', 'read_only', 1); + } else { + frm.set_df_property('display_order', 'read_only', 0); + } + frappe.db.count('Torque Manual', { + filters: { + "variant": frm.doc.variant, + "language": frm.doc.language + } + }).then(count => { + console.log("counts",count) + vehicle_count = count + 1; + if (frm.is_new()) { + frm.set_value("display_order", vehicle_count); + } else { + original_display_order = frm.doc.display_order; + } + }); +} diff --git a/smart_service/phase_2/doctype/torque_manual/torque_manual.json b/smart_service/phase_2/doctype/torque_manual/torque_manual.json new file mode 100644 index 0000000..17273fe --- /dev/null +++ b/smart_service/phase_2/doctype/torque_manual/torque_manual.json @@ -0,0 +1,134 @@ +{ + "actions": [], + "allow_rename": 1, + "autoname": "format:{variant}-{category}-{sub_category}-{language}", + "creation": "2023-12-01 10:31:27.784999", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "is_published", + "section_break_qg2b0", + "variant", + "vehicle", + "language", + "active_status", + "column_break_gkwxt", + "category", + "sub_category", + "my_id", + "display_order", + "section_break_cmyhs", + "torque_table" + ], + "fields": [ + { + "fieldname": "category", + "fieldtype": "Link", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Category", + "options": "Torque Manual Category", + "reqd": 1, + "set_only_once": 1 + }, + { + "fieldname": "column_break_gkwxt", + "fieldtype": "Column Break" + }, + { + "fieldname": "sub_category", + "fieldtype": "Link", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Sub Category", + "options": "Torque Manual Subcategory", + "reqd": 1, + "set_only_once": 1 + }, + { + "fieldname": "section_break_cmyhs", + "fieldtype": "Section Break" + }, + { + "fieldname": "torque_table", + "fieldtype": "Table", + "label": "Torque Table", + "options": "Torque Manual Details" + }, + { + "fieldname": "display_order", + "fieldtype": "Int", + "label": "Display Order" + }, + { + "fieldname": "my_id", + "fieldtype": "Int", + "hidden": 1, + "label": "My ID" + }, + { + "fieldname": "variant", + "fieldtype": "Link", + "in_standard_filter": 1, + "label": "Variant", + "options": "Variant Mapping", + "reqd": 1, + "set_only_once": 1 + }, + { + "fetch_from": "variant.vehicle", + "fieldname": "vehicle", + "fieldtype": "Data", + "label": "Vehicle" + }, + { + "fieldname": "language", + "fieldtype": "Link", + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Language", + "options": "Custom Languages", + "set_only_once": 1 + }, + { + "fieldname": "active_status", + "fieldtype": "Select", + "label": "Active Status", + "options": "Active\nInactive" + }, + { + "default": "0", + "fieldname": "is_published", + "fieldtype": "Check", + "label": "Published" + }, + { + "fieldname": "section_break_qg2b0", + "fieldtype": "Section Break" + } + ], + "index_web_pages_for_search": 1, + "links": [], + "modified": "2023-12-01 12:59:18.226290", + "modified_by": "Administrator", + "module": "Phase-2", + "name": "Torque Manual", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "sort_field": "modified", + "sort_order": "DESC" +} \ No newline at end of file diff --git a/smart_service/phase_2/doctype/torque_manual/torque_manual.py b/smart_service/phase_2/doctype/torque_manual/torque_manual.py new file mode 100644 index 0000000..2465f1f --- /dev/null +++ b/smart_service/phase_2/doctype/torque_manual/torque_manual.py @@ -0,0 +1,43 @@ +# Copyright (c) 2023, Hard n Soft Technologies Pvt Ltd and contributors +# For license information, please see license.txt + +import frappe +from frappe.model.document import Document + +class TorqueManual(Document): + def validate(self): + try: + if self.is_new(): + if self.variant and self.language: + check_exe=frappe.db.sql('''select * from `tabTorque Manual` where variant='%s' and language ='en' and name !='%s'; '''%(self.variant,self.name),as_dict=1) + if check_exe: + if self.language != "en": + for d in check_exe: + self.display_order = d['display_order'] + self.active_status = d['active_status'] + if not check_exe: + if self.language != "en": + frappe.throw("First language will be english only") + count = frappe.db.sql('''select max(my_id) as max_count from `tabTorque Manual`;''') + if count[0][0] is not None: + self.my_id = count[0][0] + 1 + else: + self.my_id = 1 + except Exception as e: + raise e + def on_update(self): + if self.language == "en": + try: + check_exe = frappe.db.get_list("Torque Manual", + filters={"variant": self.variant, "language": ["!=", "en"], + "name": ["!=", self.name]}, + fields={"name", "language", "display_order", "active_status"}) + if check_exe: + for i in check_exe: + res = frappe.get_doc( + "Torque Manual", i['name']) + res.display_order = self.display_order + res.active_status = self.active_status + res.save() + except Exception as e: + raise e diff --git a/smart_service/phase_2/doctype/torque_details/__init__.py b/smart_service/phase_2/doctype/torque_manual_category/__init__.py similarity index 100% rename from smart_service/phase_2/doctype/torque_details/__init__.py rename to smart_service/phase_2/doctype/torque_manual_category/__init__.py diff --git a/smart_service/phase_2/doctype/torque_category/test_torque_category.py b/smart_service/phase_2/doctype/torque_manual_category/test_torque_manual_category.py similarity index 71% rename from smart_service/phase_2/doctype/torque_category/test_torque_category.py rename to smart_service/phase_2/doctype/torque_manual_category/test_torque_manual_category.py index 0a9f0f4..6bbd116 100644 --- a/smart_service/phase_2/doctype/torque_category/test_torque_category.py +++ b/smart_service/phase_2/doctype/torque_manual_category/test_torque_manual_category.py @@ -4,5 +4,5 @@ # import frappe import unittest -class TestTorqueCategory(unittest.TestCase): +class TestTorqueManualCategory(unittest.TestCase): pass diff --git a/smart_service/phase_2/doctype/torque_subcategory/torque_subcategory.js b/smart_service/phase_2/doctype/torque_manual_category/torque_manual_category.js similarity index 78% rename from smart_service/phase_2/doctype/torque_subcategory/torque_subcategory.js rename to smart_service/phase_2/doctype/torque_manual_category/torque_manual_category.js index 754ac2f..f64e690 100644 --- a/smart_service/phase_2/doctype/torque_subcategory/torque_subcategory.js +++ b/smart_service/phase_2/doctype/torque_manual_category/torque_manual_category.js @@ -1,7 +1,7 @@ // Copyright (c) 2023, Hard n Soft Technologies Pvt Ltd and contributors // For license information, please see license.txt -frappe.ui.form.on('Torque Subcategory', { +frappe.ui.form.on('Torque Manual Category', { // refresh: function(frm) { // } diff --git a/smart_service/phase_2/doctype/torque_category/torque_category.json b/smart_service/phase_2/doctype/torque_manual_category/torque_manual_category.json similarity index 79% rename from smart_service/phase_2/doctype/torque_category/torque_category.json rename to smart_service/phase_2/doctype/torque_manual_category/torque_manual_category.json index c7cb692..8bea45b 100644 --- a/smart_service/phase_2/doctype/torque_category/torque_category.json +++ b/smart_service/phase_2/doctype/torque_manual_category/torque_manual_category.json @@ -1,7 +1,8 @@ { "actions": [], "allow_rename": 1, - "creation": "2023-11-24 17:09:08.707664", + "autoname": "format:{category}", + "creation": "2023-12-01 10:33:34.472251", "doctype": "DocType", "editable_grid": 1, "engine": "InnoDB", @@ -17,10 +18,10 @@ ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-11-24 17:09:08.707664", + "modified": "2023-12-01 11:55:06.400326", "modified_by": "Administrator", "module": "Phase-2", - "name": "Torque Category", + "name": "Torque Manual Category", "owner": "Administrator", "permissions": [ { diff --git a/smart_service/phase_2/doctype/torque_master/torque_master.py b/smart_service/phase_2/doctype/torque_manual_category/torque_manual_category.py similarity index 83% rename from smart_service/phase_2/doctype/torque_master/torque_master.py rename to smart_service/phase_2/doctype/torque_manual_category/torque_manual_category.py index d9a871c..788efa3 100644 --- a/smart_service/phase_2/doctype/torque_master/torque_master.py +++ b/smart_service/phase_2/doctype/torque_manual_category/torque_manual_category.py @@ -4,5 +4,5 @@ # import frappe from frappe.model.document import Document -class TorqueMaster(Document): +class TorqueManualCategory(Document): pass diff --git a/smart_service/phase_2/doctype/torque_master/__init__.py b/smart_service/phase_2/doctype/torque_manual_details/__init__.py similarity index 100% rename from smart_service/phase_2/doctype/torque_master/__init__.py rename to smart_service/phase_2/doctype/torque_manual_details/__init__.py diff --git a/smart_service/phase_2/doctype/torque_details/torque_details.json b/smart_service/phase_2/doctype/torque_manual_details/torque_manual_details.json similarity index 89% rename from smart_service/phase_2/doctype/torque_details/torque_details.json rename to smart_service/phase_2/doctype/torque_manual_details/torque_manual_details.json index 8869475..9ced315 100644 --- a/smart_service/phase_2/doctype/torque_details/torque_details.json +++ b/smart_service/phase_2/doctype/torque_manual_details/torque_manual_details.json @@ -1,7 +1,7 @@ { "actions": [], "allow_rename": 1, - "creation": "2023-11-24 17:09:41.181853", + "creation": "2023-12-01 10:31:58.622549", "doctype": "DocType", "editable_grid": 1, "engine": "InnoDB", @@ -47,10 +47,10 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-11-24 17:11:33.158796", + "modified": "2023-12-01 10:31:58.622549", "modified_by": "Administrator", "module": "Phase-2", - "name": "Torque Details", + "name": "Torque Manual Details", "owner": "Administrator", "permissions": [], "sort_field": "modified", diff --git a/smart_service/phase_2/doctype/torque_category/torque_category.py b/smart_service/phase_2/doctype/torque_manual_details/torque_manual_details.py similarity index 83% rename from smart_service/phase_2/doctype/torque_category/torque_category.py rename to smart_service/phase_2/doctype/torque_manual_details/torque_manual_details.py index 0ff2363..d7dd59a 100644 --- a/smart_service/phase_2/doctype/torque_category/torque_category.py +++ b/smart_service/phase_2/doctype/torque_manual_details/torque_manual_details.py @@ -4,5 +4,5 @@ # import frappe from frappe.model.document import Document -class TorqueCategory(Document): +class TorqueManualDetails(Document): pass diff --git a/smart_service/phase_2/doctype/torque_subcategory/__init__.py b/smart_service/phase_2/doctype/torque_manual_subcategory/__init__.py similarity index 100% rename from smart_service/phase_2/doctype/torque_subcategory/__init__.py rename to smart_service/phase_2/doctype/torque_manual_subcategory/__init__.py diff --git a/smart_service/phase_2/doctype/torque_subcategory/test_torque_subcategory.py b/smart_service/phase_2/doctype/torque_manual_subcategory/test_torque_manual_subcategory.py similarity index 70% rename from smart_service/phase_2/doctype/torque_subcategory/test_torque_subcategory.py rename to smart_service/phase_2/doctype/torque_manual_subcategory/test_torque_manual_subcategory.py index c095c03..259a9a1 100644 --- a/smart_service/phase_2/doctype/torque_subcategory/test_torque_subcategory.py +++ b/smart_service/phase_2/doctype/torque_manual_subcategory/test_torque_manual_subcategory.py @@ -4,5 +4,5 @@ # import frappe import unittest -class TestTorqueSubcategory(unittest.TestCase): +class TestTorqueManualSubcategory(unittest.TestCase): pass diff --git a/smart_service/phase_2/doctype/torque_category/torque_category.js b/smart_service/phase_2/doctype/torque_manual_subcategory/torque_manual_subcategory.js similarity index 77% rename from smart_service/phase_2/doctype/torque_category/torque_category.js rename to smart_service/phase_2/doctype/torque_manual_subcategory/torque_manual_subcategory.js index 39566aa..6c46e89 100644 --- a/smart_service/phase_2/doctype/torque_category/torque_category.js +++ b/smart_service/phase_2/doctype/torque_manual_subcategory/torque_manual_subcategory.js @@ -1,7 +1,7 @@ // Copyright (c) 2023, Hard n Soft Technologies Pvt Ltd and contributors // For license information, please see license.txt -frappe.ui.form.on('Torque Category', { +frappe.ui.form.on('Torque Manual Subcategory', { // refresh: function(frm) { // } diff --git a/smart_service/phase_2/doctype/torque_subcategory/torque_subcategory.json b/smart_service/phase_2/doctype/torque_manual_subcategory/torque_manual_subcategory.json similarity index 79% rename from smart_service/phase_2/doctype/torque_subcategory/torque_subcategory.json rename to smart_service/phase_2/doctype/torque_manual_subcategory/torque_manual_subcategory.json index 957a762..25aec87 100644 --- a/smart_service/phase_2/doctype/torque_subcategory/torque_subcategory.json +++ b/smart_service/phase_2/doctype/torque_manual_subcategory/torque_manual_subcategory.json @@ -1,7 +1,8 @@ { "actions": [], "allow_rename": 1, - "creation": "2023-11-24 17:09:21.527639", + "autoname": "format:{sub_category}", + "creation": "2023-12-01 10:32:52.875051", "doctype": "DocType", "editable_grid": 1, "engine": "InnoDB", @@ -17,10 +18,10 @@ ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-11-24 17:09:21.527639", + "modified": "2023-12-01 11:55:42.941736", "modified_by": "Administrator", "module": "Phase-2", - "name": "Torque Subcategory", + "name": "Torque Manual Subcategory", "owner": "Administrator", "permissions": [ { diff --git a/smart_service/phase_2/doctype/torque_subcategory/torque_subcategory.py b/smart_service/phase_2/doctype/torque_manual_subcategory/torque_manual_subcategory.py similarity index 82% rename from smart_service/phase_2/doctype/torque_subcategory/torque_subcategory.py rename to smart_service/phase_2/doctype/torque_manual_subcategory/torque_manual_subcategory.py index cb848b8..a82ad64 100644 --- a/smart_service/phase_2/doctype/torque_subcategory/torque_subcategory.py +++ b/smart_service/phase_2/doctype/torque_manual_subcategory/torque_manual_subcategory.py @@ -4,5 +4,5 @@ # import frappe from frappe.model.document import Document -class TorqueSubcategory(Document): +class TorqueManualSubcategory(Document): pass diff --git a/smart_service/phase_2/doctype/torque_master/torque_master.json b/smart_service/phase_2/doctype/torque_master/torque_master.json deleted file mode 100644 index e8e7b19..0000000 --- a/smart_service/phase_2/doctype/torque_master/torque_master.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "actions": [], - "allow_rename": 1, - "creation": "2023-11-24 17:10:52.598215", - "doctype": "DocType", - "editable_grid": 1, - "engine": "InnoDB", - "field_order": [ - "category", - "column_break_gkwxt", - "sub_category", - "section_break_cmyhs", - "torque_table" - ], - "fields": [ - { - "fieldname": "category", - "fieldtype": "Link", - "in_list_view": 1, - "label": "Category", - "options": "Torque Category" - }, - { - "fieldname": "sub_category", - "fieldtype": "Link", - "in_list_view": 1, - "label": "Sub Category", - "options": "Torque Subcategory" - }, - { - "fieldname": "torque_table", - "fieldtype": "Table", - "label": "Torque Table", - "options": "Torque Details" - }, - { - "fieldname": "column_break_gkwxt", - "fieldtype": "Column Break" - }, - { - "fieldname": "section_break_cmyhs", - "fieldtype": "Section Break" - } - ], - "index_web_pages_for_search": 1, - "links": [], - "modified": "2023-11-24 17:12:07.675053", - "modified_by": "Administrator", - "module": "Phase-2", - "name": "Torque Master", - "owner": "Administrator", - "permissions": [ - { - "create": 1, - "delete": 1, - "email": 1, - "export": 1, - "print": 1, - "read": 1, - "report": 1, - "role": "System Manager", - "share": 1, - "write": 1 - } - ], - "sort_field": "modified", - "sort_order": "DESC" -} \ No newline at end of file diff --git a/smart_service/phase_2/doctype/training_information/training_information.js b/smart_service/phase_2/doctype/training_information/training_information.js index bfd0a1a..d2bce23 100644 --- a/smart_service/phase_2/doctype/training_information/training_information.js +++ b/smart_service/phase_2/doctype/training_information/training_information.js @@ -9,37 +9,37 @@ frappe.ui.form.on('Training Information', { }, refresh: function (frm) { set_display_order(frm) - frm.set_query("category", function() { - return { - "filters": { - "active_status": "Active", - } - }; - }); + // frm.set_query("category", function() { + // return { + // "filters": { + // "active_status": "Active", + // } + // }; + // }); }, validate:function(frm){ cur_frm.refresh_fields("display_order") }, after_save: function (frm) { - if (frm.doc.content) { - frappe.call({ - method: "smart_service.phase_2.doctype.training_information.training_information.file_validation_child", - args: { - name: frm.doc.name, - value:"content" - }, - callback: function (r) { - console.log(r.message, "----file validation size-------") - if (r.message && r.message[0] == false) { - if (r.message[1]) { - frappe.validated = false; - frm.reload_doc() - frappe.throw("In training information content " + r.message[1] + " row was invalid file type") - } - } - } - }) - } + // if (frm.doc.content) { + // frappe.call({ + // method: "smart_service.phase_2.doctype.training_information.training_information.file_validation_child", + // args: { + // name: frm.doc.name, + // value:"content" + // }, + // callback: function (r) { + // console.log(r.message, "----file validation size-------") + // if (r.message && r.message[0] == false) { + // if (r.message[1]) { + // frappe.validated = false; + // frm.reload_doc() + // frappe.throw("In training information content " + r.message[1] + " row was invalid file type") + // } + // } + // } + // }) + // } } }); function set_display_order(frm){ @@ -64,24 +64,24 @@ function set_display_order(frm){ } }); } -frappe.ui.form.on('Training Information Content Reference',{ - content_type: function (frm, cdt, cdn) { - var select_value = locals[cdt][cdn] - var x = select_value.idx - 1; - let my_row = frm.fields_dict.content.grid.grid_rows[x]; - if (select_value.content_type == 'Image' || select_value.content_type == 'Video'){ - cur_frm.get_field("content").grid.grid_rows[x].columns.image_video.df.read_only = 0; - cur_frm.get_field("content").grid.grid_rows[x].columns.content.df.read_only = 1; - cur_frm.refresh_fields("content") - } - else { - cur_frm.get_field("content").grid.grid_rows[x].columns.image_video.df.read_only = 1; - cur_frm.get_field("content").grid.grid_rows[x].columns.content.df.read_only = 0; - cur_frm.refresh_fields("content") - } - cur_frm.refresh_field("content"); - cur_frm.refresh_field(); - }, +// frappe.ui.form.on('Training Information Content Reference',{ +// content_type: function (frm, cdt, cdn) { +// var select_value = locals[cdt][cdn] +// var x = select_value.idx - 1; +// let my_row = frm.fields_dict.content.grid.grid_rows[x]; +// if (select_value.content_type == 'Image' || select_value.content_type == 'Video'){ +// cur_frm.get_field("content").grid.grid_rows[x].columns.image_video.df.read_only = 0; +// cur_frm.get_field("content").grid.grid_rows[x].columns.content.df.read_only = 1; +// cur_frm.refresh_fields("content") +// } +// else { +// cur_frm.get_field("content").grid.grid_rows[x].columns.image_video.df.read_only = 1; +// cur_frm.get_field("content").grid.grid_rows[x].columns.content.df.read_only = 0; +// cur_frm.refresh_fields("content") +// } +// cur_frm.refresh_field("content"); +// cur_frm.refresh_field(); +// }, // validate:function(frm){ // let task_index = row.docfields.findIndex(x => x.fieldname === "content"); // if (row.doc.asset_type == 'Image' || row.doc.asset_type == 'Video') { @@ -96,4 +96,4 @@ frappe.ui.form.on('Training Information Content Reference',{ // refresh_field(); // } -}) \ No newline at end of file +// }) \ No newline at end of file diff --git a/smart_service/phase_2/doctype/training_information/training_information.json b/smart_service/phase_2/doctype/training_information/training_information.json index ce3cd9a..29a72f0 100644 --- a/smart_service/phase_2/doctype/training_information/training_information.json +++ b/smart_service/phase_2/doctype/training_information/training_information.json @@ -1,6 +1,4 @@ { - "_comments": "[]", - "_liked_by": "[]", "actions": [], "allow_rename": 1, "autoname": "format:{vehicle}-{category}-{topic}-{language}", @@ -9,15 +7,14 @@ "editable_grid": 1, "engine": "InnoDB", "field_order": [ - "published", + "is_published", "section_break_jqjts", "vehicle", "category", - "topic", + "display_order", "column_break_tweld", "language", "active_status", - "display_order", "section_break_6ucxv", "content", "section_break_6kjyf", @@ -30,6 +27,7 @@ "in_list_view": 1, "label": "Vehicle", "options": "Vehicle", + "reqd": 1, "set_only_once": 1 }, { @@ -37,15 +35,9 @@ "fieldtype": "Link", "in_list_view": 1, "label": "Category", - "options": "Training Information Master", + "options": "Training Information Category", "set_only_once": 1 }, - { - "fetch_from": "category.topic", - "fieldname": "topic", - "fieldtype": "Data", - "label": "Topic" - }, { "fieldname": "language", "fieldtype": "Link", @@ -94,21 +86,20 @@ "in_list_view": 1, "label": "Display Order" }, - { - "default": "0", - "fieldname": "published", - "fieldtype": "Check", - "label": "Published", - "read_only": 1 - }, { "fieldname": "section_break_jqjts", "fieldtype": "Section Break" + }, + { + "default": "0", + "fieldname": "is_published", + "fieldtype": "Check", + "label": "Published" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-09-04 17:41:29.001031", + "modified": "2023-12-01 13:19:50.127628", "modified_by": "Administrator", "module": "Phase-2", "name": "Training Information", diff --git a/smart_service/phase_2/doctype/training_information/training_information.py b/smart_service/phase_2/doctype/training_information/training_information.py index e7d8fd9..5e7e38b 100644 --- a/smart_service/phase_2/doctype/training_information/training_information.py +++ b/smart_service/phase_2/doctype/training_information/training_information.py @@ -6,60 +6,86 @@ from frappe.model.document import Document class TrainingInformation(Document): def validate(self): - if self.topic: - self.topic=self.topic.strip() + try: + if self.is_new(): + if self.vehicle and self.language: + check_exe=frappe.db.sql('''select * from `tabTraining Information` where vehicle='%s' and language ='en' and name !='%s'; '''%(self.vehicle,self.name),as_dict=1) + if check_exe: + if self.language != "en": + for d in check_exe: + self.display_order = d['display_order'] + self.active_status = d['active_status'] + if not check_exe: + if self.language != "en": + frappe.throw("First language will be english only") + count = frappe.db.sql('''select max(my_id) as max_count from `tabTraining Information`;''') + if count[0][0] is not None: + self.my_id = count[0][0] + 1 + else: + self.my_id = 1 + except Exception as e: + raise e + - if self.is_new(): - count = frappe.db.sql('''select max(my_id) as max_count from `tabTraining Information`;''') - if count[0][0] is not None: - self.my_id = count[0][0] + 1 - else: - self.my_id = 1 - - if not self.is_new() and self.published == 1: - self.published = 0 + def on_update(self): + if self.language == "en": + try: + check_exe = frappe.db.get_list("Training Information", + filters={"vehicle": self.vehicle, "language": ["!=", "en"], + "name": ["!=", self.name]}, + fields={"name", "language", "display_order", "active_status"}) + if check_exe: + for i in check_exe: + res = frappe.get_doc( + "Training Information", i['name']) + res.display_order = self.display_order + res.active_status = self.active_status + res.save() + except Exception as e: + raise e -@frappe.whitelist() -def file_validation_child(name=None, value=None): - from smart_service.apis.utils import check_png_ext, check_img_ext, check_zip_ext, check_pdf_ext, details_of_image, checking_image, check_mp4_ext, get_file_size - if name: - child_data = frappe.db.sql( - """select * from `tabTraining Information Content Reference` where parent='%s'"""%(name), as_dict=1) - for d in child_data: - if d['image_video']: - res = False - res1 = False - res2= False - if d['content_type'] == "Image": - res = check_img_ext(d['image_video']) - res1 = check_png_ext(d['image_video']) - else: - res2 = check_mp4_ext(d['image_video']) + +# @frappe.whitelist() +# def file_validation_child(name=None, value=None): +# from smart_service.apis.utils import check_png_ext, check_img_ext, check_zip_ext, check_pdf_ext, details_of_image, checking_image, check_mp4_ext, get_file_size +# if name: +# child_data = frappe.db.sql( +# """select * from `tabTraining Information Content Reference` where parent='%s'"""%(name), as_dict=1) +# for d in child_data: +# if d['image_video']: +# res = False +# res1 = False +# res2= False +# if d['content_type'] == "Image": +# res = check_img_ext(d['image_video']) +# res1 = check_png_ext(d['image_video']) +# else: +# res2 = check_mp4_ext(d['image_video']) - if res == True or res1 == True: - width, height, size = details_of_image( - d['image_video']) - if width > 1280 or height > 720 or size > 1*1024 and d['image_video']: - val = checking_image( - d['image_video'], "Training Information", value, name, 1) - frappe.delete_doc("Training Information Content Reference", d['name']) - if val == True: - return False, d['idx'] - else: - return True - elif res2 == True: - video_size_mb = get_file_size(d['image_video']) - if video_size_mb > 10: - frappe.delete_doc('Training Information Content Reference', d['name']) - return (False, d['idx']) - else: - if res == False and res1==False: - ret = res - else: - ret = res2 +# if res == True or res1 == True: +# width, height, size = details_of_image( +# d['image_video']) +# if width > 1280 or height > 720 or size > 1*1024 and d['image_video']: +# val = checking_image( +# d['image_video'], "Training Information", value, name, 1) +# frappe.delete_doc("Training Information Content Reference", d['name']) +# if val == True: +# return False, d['idx'] +# else: +# return True +# elif res2 == True: +# video_size_mb = get_file_size(d['image_video']) +# if video_size_mb > 10: +# frappe.delete_doc('Training Information Content Reference', d['name']) +# return (False, d['idx']) +# else: +# if res == False and res1==False: +# ret = res +# else: +# ret = res2 - val = checking_image( - d['image_video'], 'Training Information', value, name, 1) - frappe.delete_doc('Training Information Content Reference', d['name']) - return (ret, d['idx']) +# val = checking_image( +# d['image_video'], 'Training Information', value, name, 1) +# frappe.delete_doc('Training Information Content Reference', d['name']) +# return (ret, d['idx']) diff --git a/smart_service/phase_2/doctype/training_information_master/__init__.py b/smart_service/phase_2/doctype/training_information_category/__init__.py similarity index 100% rename from smart_service/phase_2/doctype/training_information_master/__init__.py rename to smart_service/phase_2/doctype/training_information_category/__init__.py diff --git a/smart_service/phase_2/doctype/training_information_master/test_training_information_master.py b/smart_service/phase_2/doctype/training_information_category/test_training_information_category.py similarity index 69% rename from smart_service/phase_2/doctype/training_information_master/test_training_information_master.py rename to smart_service/phase_2/doctype/training_information_category/test_training_information_category.py index e509483..802e3c0 100644 --- a/smart_service/phase_2/doctype/training_information_master/test_training_information_master.py +++ b/smart_service/phase_2/doctype/training_information_category/test_training_information_category.py @@ -4,5 +4,5 @@ # import frappe import unittest -class TestTrainingInformationMaster(unittest.TestCase): +class TestTrainingInformationCategory(unittest.TestCase): pass diff --git a/smart_service/phase_2/doctype/torque_master/torque_master.js b/smart_service/phase_2/doctype/training_information_category/training_information_category.js similarity index 75% rename from smart_service/phase_2/doctype/torque_master/torque_master.js rename to smart_service/phase_2/doctype/training_information_category/training_information_category.js index fae5feb..635447d 100644 --- a/smart_service/phase_2/doctype/torque_master/torque_master.js +++ b/smart_service/phase_2/doctype/training_information_category/training_information_category.js @@ -1,7 +1,7 @@ // Copyright (c) 2023, Hard n Soft Technologies Pvt Ltd and contributors // For license information, please see license.txt -frappe.ui.form.on('Torque Master', { +frappe.ui.form.on('Training Information Category', { // refresh: function(frm) { // } diff --git a/smart_service/phase_2/doctype/training_information_master/training_information_master.json b/smart_service/phase_2/doctype/training_information_category/training_information_category.json similarity index 75% rename from smart_service/phase_2/doctype/training_information_master/training_information_master.json rename to smart_service/phase_2/doctype/training_information_category/training_information_category.json index 1507b68..24d41d0 100644 --- a/smart_service/phase_2/doctype/training_information_master/training_information_master.json +++ b/smart_service/phase_2/doctype/training_information_category/training_information_category.json @@ -1,16 +1,13 @@ { - "_comments": "[]", - "_liked_by": "[]", "actions": [], "allow_rename": 1, - "autoname": "format:{category}-{topic}", - "creation": "2023-08-04 13:06:01.847663", + "autoname": "format:{category}", + "creation": "2023-12-01 12:46:26.720660", "doctype": "DocType", "editable_grid": 1, "engine": "InnoDB", "field_order": [ "category", - "topic", "column_break_75wva", "active_status", "my_id" @@ -24,11 +21,8 @@ "reqd": 1 }, { - "fieldname": "topic", - "fieldtype": "Data", - "in_list_view": 1, - "label": "Topic", - "reqd": 1 + "fieldname": "column_break_75wva", + "fieldtype": "Column Break" }, { "fieldname": "active_status", @@ -36,10 +30,6 @@ "label": "Active Status", "options": "Active\nInactive" }, - { - "fieldname": "column_break_75wva", - "fieldtype": "Column Break" - }, { "fieldname": "my_id", "fieldtype": "Int", @@ -50,10 +40,10 @@ ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-09-04 17:40:09.769420", + "modified": "2023-12-01 13:24:36.539407", "modified_by": "Administrator", "module": "Phase-2", - "name": "Training Information Master", + "name": "Training Information Category", "owner": "Administrator", "permissions": [ { diff --git a/smart_service/phase_2/doctype/torque_details/torque_details.py b/smart_service/phase_2/doctype/training_information_category/training_information_category.py similarity index 80% rename from smart_service/phase_2/doctype/torque_details/torque_details.py rename to smart_service/phase_2/doctype/training_information_category/training_information_category.py index 7e01309..abdb3fa 100644 --- a/smart_service/phase_2/doctype/torque_details/torque_details.py +++ b/smart_service/phase_2/doctype/training_information_category/training_information_category.py @@ -4,5 +4,5 @@ # import frappe from frappe.model.document import Document -class TorqueDetails(Document): +class TrainingInformationCategory(Document): pass diff --git a/smart_service/phase_2/doctype/training_information_content_reference/training_information_content_reference.json b/smart_service/phase_2/doctype/training_information_content_reference/training_information_content_reference.json index 7ca6780..4aacc64 100644 --- a/smart_service/phase_2/doctype/training_information_content_reference/training_information_content_reference.json +++ b/smart_service/phase_2/doctype/training_information_content_reference/training_information_content_reference.json @@ -6,35 +6,27 @@ "editable_grid": 1, "engine": "InnoDB", "field_order": [ - "content_type", - "content", - "image_video" + "topic", + "content" ], "fields": [ - { - "fieldname": "content_type", - "fieldtype": "Select", - "in_list_view": 1, - "label": "Content Type", - "options": "Heading\nContent\nImage\nVideo" - }, { "fieldname": "content", - "fieldtype": "Data", - "in_list_view": 1, + "fieldtype": "Attach", "label": "Content" }, { - "fieldname": "image_video", - "fieldtype": "Attach", - "in_list_view": 1, - "label": "Image/Video" + "fieldname": "topic", + "fieldtype": "Select", + "in_standard_filter": 1, + "label": "Topic", + "options": "Heading\nPDF\nPPT\nSCROM\nVideo\nImage\nAnimation\nWeb Links\nHTML" } ], "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-09-01 17:11:42.419851", + "modified": "2023-12-01 13:16:18.488344", "modified_by": "Administrator", "module": "Phase-2", "name": "Training Information Content Reference", diff --git a/smart_service/phase_2/doctype/training_information_master/training_information_master.js b/smart_service/phase_2/doctype/training_information_master/training_information_master.js deleted file mode 100644 index 7882fd1..0000000 --- a/smart_service/phase_2/doctype/training_information_master/training_information_master.js +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) 2023, Hard n Soft Technologies Pvt Ltd and contributors -// For license information, please see license.txt - -frappe.ui.form.on('Training Information Master', { - // refresh: function(frm) { - - // } - validate: function (frm) { - check_field_character(frm.doc.category) - check_field_character(frm.doc.topic) - } -}); -function check_field_character(field_name) { - if (field_name) { - var alphanum = /^[a-zA-Z]+/; - if (field_name.length > 1) { - if (field_name.length > 100) { - frappe.throw("Training Information Master: Only 100 characters are allowed") - frappe.validated = false; - } else { - if (alphanum.test(field_name) === true) { - } else if (field_name) { - frappe.throw(__("Training Information Master: Enter letter or alpha numeric characters only.")); - frappe.validated = false; - } - } - } else { - frappe.throw("Training Information Master: Single character not allowed") - frappe.validated = false; - } - } -} diff --git a/smart_service/phase_2/doctype/training_information_master/training_information_master.py b/smart_service/phase_2/doctype/training_information_master/training_information_master.py deleted file mode 100644 index a10689e..0000000 --- a/smart_service/phase_2/doctype/training_information_master/training_information_master.py +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright (c) 2023, Hard n Soft Technologies Pvt Ltd and contributors -# For license information, please see license.txt - -import frappe -from frappe.model.document import Document - -class TrainingInformationMaster(Document): - def validate(self): - if self.category: - self.category = self.category.strip() - if self.topic: - self.topic = self.topic.strip() - - if self.is_new(): - count = frappe.db.sql('''select max(my_id) as max_count from `tabTraining Information Master`;''') - if count[0][0] is not None: - self.my_id = count[0][0] + 1 - else: - self.my_id = 1 - - -