diff --git a/.gitignore b/.gitignore index 74b292e..7f0ccbf 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ tags smart_service/docs/current *.pyc -__pycache__/ \ No newline at end of file +__pycache__/ +smart_service/transactions/doctype/publish/publish.py diff --git a/__pycache__/setup.cpython-38.pyc b/__pycache__/setup.cpython-38.pyc deleted file mode 100644 index 49175a1..0000000 Binary files a/__pycache__/setup.cpython-38.pyc and /dev/null differ diff --git a/smart_service/add_ons/__pycache__/__init__.cpython-38.pyc b/smart_service/add_ons/__pycache__/__init__.cpython-38.pyc index 5448894..93c1ef8 100644 Binary files a/smart_service/add_ons/__pycache__/__init__.cpython-38.pyc and b/smart_service/add_ons/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/__pycache__/__init__.cpython-38.pyc b/smart_service/add_ons/doctype/__pycache__/__init__.cpython-38.pyc index dd4d856..9ced9bb 100644 Binary files a/smart_service/add_ons/doctype/__pycache__/__init__.cpython-38.pyc and b/smart_service/add_ons/doctype/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/app_dealer/__pycache__/__init__.cpython-38.pyc b/smart_service/add_ons/doctype/app_dealer/__pycache__/__init__.cpython-38.pyc index 86fa2f7..06365f2 100644 Binary files a/smart_service/add_ons/doctype/app_dealer/__pycache__/__init__.cpython-38.pyc and b/smart_service/add_ons/doctype/app_dealer/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/app_dealer/__pycache__/app_dealer.cpython-38.pyc b/smart_service/add_ons/doctype/app_dealer/__pycache__/app_dealer.cpython-38.pyc index 0c13f7e..f23f6a9 100644 Binary files a/smart_service/add_ons/doctype/app_dealer/__pycache__/app_dealer.cpython-38.pyc and b/smart_service/add_ons/doctype/app_dealer/__pycache__/app_dealer.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/app_device/__pycache__/__init__.cpython-38.pyc b/smart_service/add_ons/doctype/app_device/__pycache__/__init__.cpython-38.pyc index bad1a28..dd5540e 100644 Binary files a/smart_service/add_ons/doctype/app_device/__pycache__/__init__.cpython-38.pyc and b/smart_service/add_ons/doctype/app_device/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/app_device/__pycache__/app_device.cpython-38.pyc b/smart_service/add_ons/doctype/app_device/__pycache__/app_device.cpython-38.pyc index 7faf330..47f6266 100644 Binary files a/smart_service/add_ons/doctype/app_device/__pycache__/app_device.cpython-38.pyc and b/smart_service/add_ons/doctype/app_device/__pycache__/app_device.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/app_log/__pycache__/__init__.cpython-38.pyc b/smart_service/add_ons/doctype/app_log/__pycache__/__init__.cpython-38.pyc index 5d173d9..fe180b1 100644 Binary files a/smart_service/add_ons/doctype/app_log/__pycache__/__init__.cpython-38.pyc and b/smart_service/add_ons/doctype/app_log/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/app_log/__pycache__/app_log.cpython-38.pyc b/smart_service/add_ons/doctype/app_log/__pycache__/app_log.cpython-38.pyc index 935b11b..f881c3a 100644 Binary files a/smart_service/add_ons/doctype/app_log/__pycache__/app_log.cpython-38.pyc and b/smart_service/add_ons/doctype/app_log/__pycache__/app_log.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/app_preference/__pycache__/__init__.cpython-38.pyc b/smart_service/add_ons/doctype/app_preference/__pycache__/__init__.cpython-38.pyc index 23228c6..b167448 100644 Binary files a/smart_service/add_ons/doctype/app_preference/__pycache__/__init__.cpython-38.pyc and b/smart_service/add_ons/doctype/app_preference/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/app_preference/__pycache__/app_preference.cpython-38.pyc b/smart_service/add_ons/doctype/app_preference/__pycache__/app_preference.cpython-38.pyc index e280073..f7173f5 100644 Binary files a/smart_service/add_ons/doctype/app_preference/__pycache__/app_preference.cpython-38.pyc and b/smart_service/add_ons/doctype/app_preference/__pycache__/app_preference.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/app_users/__pycache__/__init__.cpython-38.pyc b/smart_service/add_ons/doctype/app_users/__pycache__/__init__.cpython-38.pyc index a31a949..82c09a1 100644 Binary files a/smart_service/add_ons/doctype/app_users/__pycache__/__init__.cpython-38.pyc and b/smart_service/add_ons/doctype/app_users/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/app_users/__pycache__/app_users.cpython-38.pyc b/smart_service/add_ons/doctype/app_users/__pycache__/app_users.cpython-38.pyc index 1512aed..a9ebcfc 100644 Binary files a/smart_service/add_ons/doctype/app_users/__pycache__/app_users.cpython-38.pyc and b/smart_service/add_ons/doctype/app_users/__pycache__/app_users.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/captcha_validation/__pycache__/__init__.cpython-38.pyc b/smart_service/add_ons/doctype/captcha_validation/__pycache__/__init__.cpython-38.pyc index 7853c09..e6643d0 100644 Binary files a/smart_service/add_ons/doctype/captcha_validation/__pycache__/__init__.cpython-38.pyc and b/smart_service/add_ons/doctype/captcha_validation/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/captcha_validation/__pycache__/captcha_validation.cpython-38.pyc b/smart_service/add_ons/doctype/captcha_validation/__pycache__/captcha_validation.cpython-38.pyc index 39e9483..8c4e721 100644 Binary files a/smart_service/add_ons/doctype/captcha_validation/__pycache__/captcha_validation.cpython-38.pyc and b/smart_service/add_ons/doctype/captcha_validation/__pycache__/captcha_validation.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/user_feedback/__pycache__/__init__.cpython-38.pyc b/smart_service/add_ons/doctype/user_feedback/__pycache__/__init__.cpython-38.pyc index defea26..d61daca 100644 Binary files a/smart_service/add_ons/doctype/user_feedback/__pycache__/__init__.cpython-38.pyc and b/smart_service/add_ons/doctype/user_feedback/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/user_feedback/__pycache__/user_feedback.cpython-38.pyc b/smart_service/add_ons/doctype/user_feedback/__pycache__/user_feedback.cpython-38.pyc index 632e808..d43b22d 100644 Binary files a/smart_service/add_ons/doctype/user_feedback/__pycache__/user_feedback.cpython-38.pyc and b/smart_service/add_ons/doctype/user_feedback/__pycache__/user_feedback.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/user_feedback_types/__pycache__/__init__.cpython-38.pyc b/smart_service/add_ons/doctype/user_feedback_types/__pycache__/__init__.cpython-38.pyc index a9fe0b3..a9d2d02 100644 Binary files a/smart_service/add_ons/doctype/user_feedback_types/__pycache__/__init__.cpython-38.pyc and b/smart_service/add_ons/doctype/user_feedback_types/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/add_ons/doctype/user_feedback_types/__pycache__/user_feedback_types.cpython-38.pyc b/smart_service/add_ons/doctype/user_feedback_types/__pycache__/user_feedback_types.cpython-38.pyc index 19d5036..69951d4 100644 Binary files a/smart_service/add_ons/doctype/user_feedback_types/__pycache__/user_feedback_types.cpython-38.pyc and b/smart_service/add_ons/doctype/user_feedback_types/__pycache__/user_feedback_types.cpython-38.pyc differ diff --git a/smart_service/apis/__pycache__/addon_api.cpython-38.pyc b/smart_service/apis/__pycache__/addon_api.cpython-38.pyc index 3f38dba..75299a8 100644 Binary files a/smart_service/apis/__pycache__/addon_api.cpython-38.pyc and b/smart_service/apis/__pycache__/addon_api.cpython-38.pyc differ diff --git a/smart_service/apis/__pycache__/master_api.cpython-38.pyc b/smart_service/apis/__pycache__/master_api.cpython-38.pyc index 60a4d35..b6ef936 100644 Binary files a/smart_service/apis/__pycache__/master_api.cpython-38.pyc and b/smart_service/apis/__pycache__/master_api.cpython-38.pyc differ diff --git a/smart_service/apis/__pycache__/publish_api.cpython-38.pyc b/smart_service/apis/__pycache__/publish_api.cpython-38.pyc index 8f66f57..affdc96 100644 Binary files a/smart_service/apis/__pycache__/publish_api.cpython-38.pyc and b/smart_service/apis/__pycache__/publish_api.cpython-38.pyc differ diff --git a/smart_service/apis/publish_api.py b/smart_service/apis/publish_api.py index 81eafb2..4ec6691 100644 --- a/smart_service/apis/publish_api.py +++ b/smart_service/apis/publish_api.py @@ -251,15 +251,15 @@ def print(sts): @frappe.whitelist(allow_guest=True) def new_publish(args, publish_type, vehicle, language, version): - rate_res = custom_rate_limit(limit=5, seconds=15) - if rate_res != 1: - return rate_res + # rate_res = custom_rate_limit(limit=5, seconds=15) + # if rate_res != 1: + # return rate_res val = input_validation(args=args, publish_type=publish_type, vehicle=vehicle, language=language, version=version) if val != '': return {'status': 0, 'error': "Parameter missing :"+val} # Create Directory for internal,global and full_update publish - list1 = [] + # list1 = [] try: try: if not os.path.exists(internal_path + vehicle + '/'): @@ -274,20 +274,20 @@ def new_publish(args, publish_type, vehicle, language, version): # JSON generation json_file = json_grouping(args, language) - file_name = '%s-%s_v%s.json' % (vehicle, language, version) - + file_name = '' + base_file_name = '%s-%s_v%s.json' % (vehicle, language, version) # File name generation if publish_type.lower() == 'internal': - file_name = internal_path + vehicle + '/' + file_name + file_name = internal_path + vehicle + '/' + base_file_name elif publish_type.lower() == 'global': - file_name = global_path + vehicle + '/' + file_name + file_name = global_path + vehicle + '/' + base_file_name else: return {"status": 0, 'error': 'Publish type not available'} # Save file (Internal/Global) with open(file_name, 'w') as outfile: outfile.write(json.dumps(json_file)) - get_step_total_count(file_name) + # get_step_total_count(file_name) # Remove previous internal publish file if publish_type.lower() == 'internal': @@ -301,15 +301,14 @@ def new_publish(args, publish_type, vehicle, language, version): pub_ver = None prev_update_ver = None if publish_type.lower() == 'global': - full_update_file_name = full_update_path + vehicle + '/' + \ '%s-%s-full_v%s.json' % (vehicle, language, version) - # Since full update is not available for Global version 1 if version == '1.00': with open(full_update_file_name, 'w') as outfile: outfile.write(json.dumps(json_file)) - get_step_total_count(full_update_file_name) + + # get_step_total_count(full_update_file_name) else: pub_ver = frappe.db.sql(''' SELECT vehicle,`language`,version,publish_type FROM tabPublish where vehicle = '{}' @@ -319,16 +318,17 @@ def new_publish(args, publish_type, vehicle, language, version): prev_full_update_file = full_update_path + vehicle + '/' + \ '%s-%s-full_v%s.json' % (vehicle, language, prev_update_ver) - list1.append(prev_full_update_file) - list1.append(file_name) - list1.append(full_update_file_name) - final_update_file = merge_json_files( + + file_flag, final_update_file = merge_json_files( prev_full_update_file, file_name, full_update_file_name) - get_step_total_count(final_update_file) + if file_flag: + return True, file_name.split('public')[1] + # get_step_total_count(final_update_file) - return file_name.split('public')[1] - except: - return "Failed to save file" + return True, file_name.split('public')[1] + except Exception as e: + # return "Failed to save file" + return False, str(frappe.get_traceback()) @frappe.whitelist(allow_guest=True) @@ -381,31 +381,29 @@ def new_update(vehicle_list=None): @frappe.whitelist(allow_guest=True) def merge_json_files(old_json_path, new_json_path, out_file_path): - rate_res = custom_rate_limit(limit=5, seconds=15) - if rate_res != 1: - return rate_res - val = input_validation(old_json_path=old_json_path, - new_json_path=new_json_path, out_file_path=out_file_path) - if val != '': - return {'status': 0, 'error': "Parameter missing :"+val} + # rate_res = custom_rate_limit(limit=5, seconds=15) + # if rate_res != 1: + # return rate_res + # val = input_validation(old_json_path=old_json_path, + # new_json_path=new_json_path, out_file_path=out_file_path) + # if val != '': + # return {'status': 0, 'error': "Parameter missing :" + val} + try: - with open(old_json_path) as json_file: + with open(old_json_path, 'r') as json_file: data_old = json.load(json_file) - with open(new_json_path) as json_file: - data_new = json.load(json_file) + with open(new_json_path, 'r') as json_file1: + data_new = json.load(json_file1) + data_consolidated = {'JSON': []} - # print('Collecting Variants...') variant_name = set() sub_system_name = set() - procedure_name = set() - step_name = set() variant_added = set() for variant in data_old['JSON']: variant_name.add(variant['Variant']['name']) for variant in data_new['JSON']: variant_name.add(variant['Variant']['name']) - # print('Comparing Variants...') for variant_new in data_new['JSON']: if variant_new['Variant']['name'] in variant_name and variant_new['Variant']['name'] not in variant_added: @@ -415,19 +413,19 @@ def merge_json_files(old_json_path, new_json_path, out_file_path): variant_asset_name = set() variant_asset_added = set() variant_asset_list = [] - # print(variant_new['Variant']) try: - variant_new['Variant']['Assets'] + # variant_new['Variant']['Assets'] for variant_asset in variant_new['Variant']['Assets']: variant_asset_name.add(variant_asset['file']) - if variant_asset['file'] not in variant_asset_added and variant_asset['file'] in variant_asset_name: + if variant_asset['file'] not in variant_asset_added and variant_asset[ + 'file'] in variant_asset_name: variant_asset_list.append(variant_asset) variant_asset_added.add(variant_asset['file']) except: pass # print('Assets not present in '+variant_new['Variant']['name']) try: - variant_new['Variant']['Systems'] + # variant_new['Variant']['Systems'] for system in variant_new['Variant']['Systems']: system_asset_name = set() system_asset_added = set() @@ -447,10 +445,10 @@ def merge_json_files(old_json_path, new_json_path, out_file_path): conf_km_name.add(ck['kilometer_name']) if ck['kilometer_name'] not in conf_km_added and ck['kilometer_name'] in conf_km_name: conf_km_list.append({ - "kilometer_name": ck['kilometer_name'], - "kilometer_IDX": ck['kilometer_IDX'], - "kilometers_applicable": ck['kilometers_applicable'] - }) + "kilometer_name": ck['kilometer_name'], + "kilometer_IDX": ck['kilometer_IDX'], + "kilometers_applicable": ck['kilometers_applicable'] + }) conf_km_added.add( ck['kilometer_name']) for old_variants in data_old['JSON']: @@ -462,7 +460,8 @@ def merge_json_files(old_json_path, new_json_path, out_file_path): for old_ck in old_sub_system['Config Kilometer']: conf_km_name.add( old_ck['kilometer_name']) - if old_ck['kilometer_name'] not in conf_km_added and old_ck['kilometer_name'] in conf_km_name: + if old_ck['kilometer_name'] not in conf_km_added and \ + old_ck['kilometer_name'] in conf_km_name: sub_system_list.append( old_ck) conf_km_added.add( @@ -472,7 +471,8 @@ def merge_json_files(old_json_path, new_json_path, out_file_path): proc_det_list = [] for pd in subsystem['Procedure_details']: proc_det_name.add(pd['procedure_name']) - if pd['procedure_name'] not in proc_det_added and pd['procedure_name'] in proc_det_name: + if pd['procedure_name'] not in proc_det_added and pd[ + 'procedure_name'] in proc_det_name: proc_det_list.append({ "procedure_name": pd['procedure_name'], "steps": pd['steps'], @@ -488,7 +488,8 @@ def merge_json_files(old_json_path, new_json_path, out_file_path): for old_pd in old_sub_system['Procedure_details']: proc_det_name.add( old_pd['kilometer_name']) - if old_pd['procedure_name'] not in proc_det_added and old_pd['procedure_name'] in proc_det_name: + if old_pd['procedure_name'] not in proc_det_added and \ + old_pd['procedure_name'] in proc_det_name: sub_system_list.append( old_pd) proc_det_added.add( @@ -518,14 +519,16 @@ def merge_json_files(old_json_path, new_json_path, out_file_path): for old_sub_system in old_system['Subsystems']: sub_system_name.add( old_sub_system['sub_systems']) - if old_sub_system['sub_systems'] not in sub_system_added and old_sub_system['sub_systems'] in sub_system_name: + if old_sub_system['sub_systems'] not in sub_system_added and \ + old_sub_system['sub_systems'] in sub_system_name: sub_system_list.append( old_sub_system) sub_system_added.add( old_sub_system['sub_systems']) for asset in system['Assets']: system_asset_name.add(asset['system_asset']) - if asset['system_asset'] not in system_asset_added and asset['system_asset'] in system_asset_name: + if asset['system_asset'] not in system_asset_added and asset[ + 'system_asset'] in system_asset_name: system_asset_list.append({"system_asset": asset['system_asset'], "systemdisplayorder": asset['systemdisplayorder'], "active_status": asset['active_status'], @@ -539,7 +542,8 @@ def merge_json_files(old_json_path, new_json_path, out_file_path): for old_system_asset in old_system['Assets']: system_asset_name.add( old_system_asset['system_asset']) - if old_system_asset['system_asset'] not in system_asset_added and old_system_asset['system_asset'] in system_asset_name: + if old_system_asset['system_asset'] not in system_asset_added and \ + old_system_asset['system_asset'] in system_asset_name: system_asset_list.append( old_system_asset) system_asset_added.add( @@ -573,12 +577,14 @@ def merge_json_files(old_json_path, new_json_path, out_file_path): "variant": variant_new['Variant']['variant'], "vehicle": variant_new['Variant']['vehicle'], "family_code": variant_new['Variant']['family_code'], - "vehicle_segment": variant_new['Variant']['vehicle_segment'], + "vehicle_segment": variant_new['Variant'][ + 'vehicle_segment'], "fuel": variant_new['Variant']['fuel'], "transmission": variant_new['Variant']['transmission'], "drive": variant_new['Variant']['drive'], "active_status": variant_new['Variant']['active_status'], - "kms_mapping_active_status": variant_new['Variant']['kms_mapping_active_status'], + "kms_mapping_active_status": variant_new['Variant'][ + 'kms_mapping_active_status'], "Assets": variant_asset_list, "Systems": system_list }}) @@ -590,9 +596,10 @@ def merge_json_files(old_json_path, new_json_path, out_file_path): json_object = json.dumps(data_consolidated) with open(out_file_path, "w") as outfile: outfile.write(json_object) - return out_file_path + return True, out_file_path except Exception as e: - return "Exception in publish" + return False, frappe.get_traceback() + # return "Exception in publish" def get_step_total_count(json_path): diff --git a/smart_service/hooks.py b/smart_service/hooks.py index 79d6c74..05fecae 100644 --- a/smart_service/hooks.py +++ b/smart_service/hooks.py @@ -9,7 +9,7 @@ app_color = "#E31A37" app_email = "siva@hnsonline.com" app_license = "MIT" # app_logo_url = "/assets/smart_service/images/SS Alone.png" -app_logo_url = "/assets/smart_service/images/SsAndMahindra.png" +app_logo_url = "/assets/smart_service/images/Mahindra Rise2.png" # app_logo_url = "/assets/smart_service/images/ic_app_icon1.png" # ic_app_icon.png diff --git a/smart_service/masters/__pycache__/__init__.cpython-38.pyc b/smart_service/masters/__pycache__/__init__.cpython-38.pyc index 62cecd8..db8b5f4 100644 Binary files a/smart_service/masters/__pycache__/__init__.cpython-38.pyc and b/smart_service/masters/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/masters/doctype/__pycache__/__init__.cpython-38.pyc b/smart_service/masters/doctype/__pycache__/__init__.cpython-38.pyc index ee026b9..2fd9af7 100644 Binary files a/smart_service/masters/doctype/__pycache__/__init__.cpython-38.pyc and b/smart_service/masters/doctype/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/masters/doctype/variant/__pycache__/__init__.cpython-38.pyc b/smart_service/masters/doctype/variant/__pycache__/__init__.cpython-38.pyc index 81f4b64..4dcda72 100644 Binary files a/smart_service/masters/doctype/variant/__pycache__/__init__.cpython-38.pyc and b/smart_service/masters/doctype/variant/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/masters/doctype/variant/__pycache__/variant.cpython-38.pyc b/smart_service/masters/doctype/variant/__pycache__/variant.cpython-38.pyc index 3ea54e1..df0ad7e 100644 Binary files a/smart_service/masters/doctype/variant/__pycache__/variant.cpython-38.pyc and b/smart_service/masters/doctype/variant/__pycache__/variant.cpython-38.pyc differ diff --git a/smart_service/masters/doctype/vehicle/__pycache__/__init__.cpython-38.pyc b/smart_service/masters/doctype/vehicle/__pycache__/__init__.cpython-38.pyc index 800af7a..616f642 100644 Binary files a/smart_service/masters/doctype/vehicle/__pycache__/__init__.cpython-38.pyc and b/smart_service/masters/doctype/vehicle/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/masters/doctype/vehicle/__pycache__/vehicle.cpython-38.pyc b/smart_service/masters/doctype/vehicle/__pycache__/vehicle.cpython-38.pyc index 925ef7b..b9d8e38 100644 Binary files a/smart_service/masters/doctype/vehicle/__pycache__/vehicle.cpython-38.pyc and b/smart_service/masters/doctype/vehicle/__pycache__/vehicle.cpython-38.pyc differ diff --git a/smart_service/public/css/smart_service.css b/smart_service/public/css/smart_service.css index b2e8cf9..9183ba7 100644 --- a/smart_service/public/css/smart_service.css +++ b/smart_service/public/css/smart_service.css @@ -26,8 +26,8 @@ } .app-logo { - width: 400px !important; - height: 50px !important; + /* width: 400px !important; + height: 50px !important; */ image-rendering: -webkit-optimize-contrast !important; filter: none !important; } diff --git a/smart_service/public/images/Mahindra Rise2.png b/smart_service/public/images/Mahindra Rise2.png new file mode 100644 index 0000000..e545f83 Binary files /dev/null and b/smart_service/public/images/Mahindra Rise2.png differ diff --git a/smart_service/public/images/Mahindra Rise2_test.png b/smart_service/public/images/Mahindra Rise2_test.png new file mode 100644 index 0000000..ef8689b Binary files /dev/null and b/smart_service/public/images/Mahindra Rise2_test.png differ diff --git a/smart_service/reports/__pycache__/__init__.cpython-38.pyc b/smart_service/reports/__pycache__/__init__.cpython-38.pyc index ddcb831..40a965b 100644 Binary files a/smart_service/reports/__pycache__/__init__.cpython-38.pyc and b/smart_service/reports/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/kilometer_mapping/__pycache__/__init__.cpython-38.pyc b/smart_service/transactions/doctype/kilometer_mapping/__pycache__/__init__.cpython-38.pyc index b65ae46..119635c 100644 Binary files a/smart_service/transactions/doctype/kilometer_mapping/__pycache__/__init__.cpython-38.pyc and b/smart_service/transactions/doctype/kilometer_mapping/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/kilometer_mapping/__pycache__/kilometer_mapping.cpython-38.pyc b/smart_service/transactions/doctype/kilometer_mapping/__pycache__/kilometer_mapping.cpython-38.pyc index 6dde310..9a8bfa1 100644 Binary files a/smart_service/transactions/doctype/kilometer_mapping/__pycache__/kilometer_mapping.cpython-38.pyc and b/smart_service/transactions/doctype/kilometer_mapping/__pycache__/kilometer_mapping.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/kilometer_mapping_items/__pycache__/__init__.cpython-38.pyc b/smart_service/transactions/doctype/kilometer_mapping_items/__pycache__/__init__.cpython-38.pyc index bba4461..1045222 100644 Binary files a/smart_service/transactions/doctype/kilometer_mapping_items/__pycache__/__init__.cpython-38.pyc and b/smart_service/transactions/doctype/kilometer_mapping_items/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/kilometer_mapping_items/__pycache__/kilometer_mapping_items.cpython-38.pyc b/smart_service/transactions/doctype/kilometer_mapping_items/__pycache__/kilometer_mapping_items.cpython-38.pyc index 9339623..5cf7b9d 100644 Binary files a/smart_service/transactions/doctype/kilometer_mapping_items/__pycache__/kilometer_mapping_items.cpython-38.pyc and b/smart_service/transactions/doctype/kilometer_mapping_items/__pycache__/kilometer_mapping_items.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/publish/__pycache__/__init__.cpython-38.pyc b/smart_service/transactions/doctype/publish/__pycache__/__init__.cpython-38.pyc index a767963..810d807 100644 Binary files a/smart_service/transactions/doctype/publish/__pycache__/__init__.cpython-38.pyc and b/smart_service/transactions/doctype/publish/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/publish/__pycache__/publish.cpython-38.pyc b/smart_service/transactions/doctype/publish/__pycache__/publish.cpython-38.pyc index e58073b..4aae2c6 100644 Binary files a/smart_service/transactions/doctype/publish/__pycache__/publish.cpython-38.pyc and b/smart_service/transactions/doctype/publish/__pycache__/publish.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/publish/publish.js b/smart_service/transactions/doctype/publish/publish.js index 6accd17..3d7a8cb 100644 --- a/smart_service/transactions/doctype/publish/publish.js +++ b/smart_service/transactions/doctype/publish/publish.js @@ -113,8 +113,8 @@ frappe.ui.form.on('Publish', { cur_frm.refresh_field('version') if (frm.doc.docstatus === 1 && frm.doc.publish_status == 'To Publish') { frappe.call({ - // method: "smart_service.apis.publish_api.api_procedure", - method: "smart_service.apis.publish_api.new_publish", + // method: "smart_service.apis.publish_api.api_procedure", + method: "smart_service.apis.publish_api.new_publish", args: { "args": frm.doc.name, "publish_type": frm.doc.publish_type, @@ -123,43 +123,74 @@ frappe.ui.form.on('Publish', { "version": frm.doc.version }, callback: function (r) { - frm.set_value('publish_status', 'Published'); - frm.set_value('actual_published_date', frappe.datetime.nowdate()); - if (r.message != "Failed to save file") { + if (r.message[0]) { + frm.set_value('publish_status', 'Published'); + frm.set_value('actual_published_date', frappe.datetime.nowdate()); frappe.call({ method: "smart_service.transactions.doctype.publish.publish.update_procedure_value", - args: { - "name": frm.doc.name, - }, - callback: (r) => { + args: { + "name": frm.doc.name, + "file_path": r.message[1], + }, + callback: (r) => { // frm.save('Update'); - } + } }) - - // frm.set_value('publish_status', 'Published'); - // frm.set_value('actual_published_date', frappe.datetime.nowdate()); frappe.msgprint({ title: __('Notification'), - message: __('Successfully Published' + r.message), + message: __('Successfully Published: ' + r.message[1]), primary_action: { action(values) { frm.save('Update'); - - } } }); - } else { - frappe.msgprint('Publish Failed') } + else { + frappe.msgprint({ + title: __('Notification'), + message: __('Not Successfully Published: ' + r.message[1]), + // primary_action: { + // action(values) { + // frm.save('Update'); + // } + // } + }); + + } + + + // if (r.message != "Failed to save file") { + // frm.set_value('publish_status', 'Published'); + // frm.set_value('actual_published_date', frappe.datetime.nowdate()); + // frappe.call({ + // method: "smart_service.transactions.doctype.publish.publish.update_procedure_value", + // args: { + // "name": frm.doc.name, + // "file_path": r.message, + // }, + // callback: (r) => { + // // frm.save('Update'); + // } + // }) + // frappe.msgprint({ + // title: __('Notification'), + // message: __('Successfully Published: ' + r.message), + // primary_action: { + // action(values) { + // frm.save('Update'); + // } + // } + // }); + // } else { + // frappe.msgprint('Publish Failed') + // } } }); } - }, }) } - }, () => { // action to perform if No is selected }); @@ -171,12 +202,12 @@ frappe.ui.form.on('Publish', { if (frm.doc.docstatus === 0 && frm.doc.publish_status == 'To Publish') { frm.get_field('system_mapping').grid.add_custom_button(__('Add to Publish'), function () { - var added = 0; - var topublish = []; + let added = 0; + let topublish = []; if (frm.doc.publish_type == 'Global') { topublish = ['Publish Ready']; } else { topublish = ['Review Pending', 'Publish Ready', 'Approval Pending']; } frm.doc.system_mapping.forEach(row => { if (topublish.indexOf(row.procedure_status) > -1) { - var dulicate = false; + let dulicate = false; if (frm.doc.publish_documents) { frm.doc.publish_documents.forEach(publishrow => { if (frm.doc.variant_mapping == publishrow.variant_mapping && @@ -187,7 +218,7 @@ frappe.ui.form.on('Publish', { }); } if (dulicate === false) { - var child = cur_frm.add_child("publish_documents"); + let child = cur_frm.add_child("publish_documents"); child.variant_mapping = frm.doc.variant_mapping; child.system = row.systems; child.sub_system = row.sub_systems; @@ -210,11 +241,10 @@ frappe.ui.form.on('Publish', { } if (frm.doc.docstatus === 0 && frm.doc.publish_status == 'To Publish') { frm.get_field('variant_mapping_assets').grid.add_custom_button(__('Add to Publish'), function () { - var added = 0; - var topublish = []; + let added = 0; frm.doc.variant_mapping_assets.forEach(row => { if (row.active_status == "Active" || row.active_status == "Inactive") { - var dulicate = false; + let dulicate = false; if (frm.doc.publish_documents) { frm.doc.publish_documents.forEach(publishrow => { if (frm.doc.variant_mapping == publishrow.variant_mapping && @@ -224,7 +254,7 @@ frappe.ui.form.on('Publish', { }); } if (dulicate === false) { - var child = cur_frm.add_child("publish_documents"); + let child = cur_frm.add_child("publish_documents"); child.variant_mapping = frm.doc.variant_mapping; child.asset_category = row.category; child.item_category = "Variant Mapping Assets"; @@ -246,12 +276,12 @@ frappe.ui.form.on('Publish', { } }, validate: function (frm) { - var regex = /[!@#$%^*_+\=\[\]{};'`~\\|.<>\?]+/; - if (regex.test(frm.doc.release_description) === true) { + let regex = /[!@#$%^*_+\=\[\]{};'`~\\|.<>\?]+/; + if (regex.test(frm.doc.release_description) === true) { frm.doc.release_description = ''; frm.refresh_fields(); - frappe.msgprint(__("Publish Description: Only letters, numbers and / - () & , ' : are allowed.")); - } + frappe.msgprint(__("Publish Description: Only letters, numbers and / - () & , ' : are allowed.")); + } if (frm.doc.vehicle && frm.doc.release_description && frm.fields_dict.publish_documents.grid.grid_rows.length === 0) { frappe.msgprint(__("No item selected to Publish")); @@ -268,7 +298,7 @@ frappe.ui.form.on('Publish', { cur_frm.refresh_field('variant'); }) - var km_name = frm.doc.variant_mapping + "-" + frm.doc.language + "-KM"; + let km_name = frm.doc.variant_mapping + "-" + frm.doc.language + "-KM"; frappe.db.get_value('Kilometer Mapping', { name: km_name }, 'workflow_state', (r) => { if (r.workflow_state == "Draft") { frm.doc.kilometer_mapping = ''; @@ -307,7 +337,7 @@ frappe.ui.form.on('Publish', { }, 5); } if (frm.doc.km_active_status === "" || frm.doc.km_active_status === null) { return; } - var filter = frm.doc.variant_mapping + "-" + frm.doc.language + "-SM"; + let filter = frm.doc.variant_mapping + "-" + frm.doc.language + "-SM"; if (frm.doc.variant_mapping_status == "Active" && frm.doc.km_active_status == "Active") { frappe.call({ "method": "smart_service.transactions.doctype.publish.publish.get_system", @@ -317,7 +347,7 @@ frappe.ui.form.on('Publish', { }, callback: function (r) { $.each(r.message, function (index, row) { - var child; + let child; child = cur_frm.add_child("system_mapping"); child.systems = row.systems; child.sub_systems = row.sub_systems; @@ -343,7 +373,7 @@ frappe.ui.form.on('Publish', { }, callback: function (r) { $.each(r.message, function (index, row) { - var child; + let child; child = cur_frm.add_child("variant_mapping_assets"); child.category = row.category; child.language = row.language; @@ -364,7 +394,7 @@ frappe.ui.form.on('Publish', { }, callback: function (r) { $.each(r.message, function (index, row) { - var child_row; + let child_row; child_row = cur_frm.add_child("variant_mapping_assets"); child_row.category = row.systems; child_row.language = row.language; @@ -388,7 +418,7 @@ frappe.ui.form.on('Publish', { } }, add_variant_mapping_to_publish: function (frm) { - var dulicate = false; + let dulicate = false; if (frm.doc.publish_documents) { frm.doc.publish_documents.forEach(publishrow => { if (frm.doc.variant_mapping == publishrow.variant_mapping && publishrow.systems === undefined && publishrow.sub_systems === undefined && publishrow.procedure === undefined) { @@ -398,7 +428,7 @@ frappe.ui.form.on('Publish', { frappe.msgprint("Variant Mapping already added"); } if (dulicate === false) { - var child = cur_frm.add_child("publish_documents"); + let child = cur_frm.add_child("publish_documents"); child.variant_mapping = frm.doc.variant_mapping; child.item_category = "Variant Mapping"; refresh_field("publish_documents"); @@ -419,7 +449,7 @@ frappe.ui.form.on('Publish', { }, callback: function (r) { if (r.message) { - var vehicle = frm.doc.vehicle; + let vehicle = frm.doc.vehicle; cur_frm.doc.vehicle = ''; cur_frm.doc.vehicle_status = ''; cur_frm.refresh_field('vehicle'); @@ -462,6 +492,7 @@ frappe.ui.form.on('Publish', { doc: frm.doc.name }, callback: (r) => { + frm.doc.version = r cur_frm.refresh_field('version') }, error: (r) => { diff --git a/smart_service/transactions/doctype/publish/publish.json b/smart_service/transactions/doctype/publish/publish.json index af874a1..16fdd2d 100644 --- a/smart_service/transactions/doctype/publish/publish.json +++ b/smart_service/transactions/doctype/publish/publish.json @@ -11,6 +11,7 @@ "actual_published_date", "publish_type", "publish_status", + "file_path", "column_break_3", "release_description", "version", @@ -222,7 +223,7 @@ { "allow_on_submit": 1, "fieldname": "version", - "fieldtype": "Data", + "fieldtype": "Float", "in_standard_filter": 1, "label": "Version", "read_only": 1 @@ -296,12 +297,19 @@ "fieldtype": "Small Text", "label": "Kilometer Mapping List", "read_only": 1 + }, + { + "allow_on_submit": 1, + "fieldname": "file_path", + "fieldtype": "Data", + "label": "File Path", + "read_only": 1 } ], "index_web_pages_for_search": 1, "is_submittable": 1, "links": [], - "modified": "2023-05-16 16:59:45.341061", + "modified": "2023-05-20 12:35:06.604859", "modified_by": "Administrator", "module": "Transactions", "name": "Publish", diff --git a/smart_service/transactions/doctype/publish/publish.py b/smart_service/transactions/doctype/publish/publish.py index 912aa29..6291fa2 100644 --- a/smart_service/transactions/doctype/publish/publish.py +++ b/smart_service/transactions/doctype/publish/publish.py @@ -16,9 +16,11 @@ class Publish(Document): # Selected variant and kilometer mapping details list variant = [] for vm in self.get('publish_documents'): - if vm.variant_mapping in variant: - pass - else: + # if vm.variant_mapping in variant: + # pass + # else: + # variant.append(vm.variant_mapping) + if vm.variant_mapping not in variant: variant.append(vm.variant_mapping) self.variant_mapping_details = '' @@ -33,13 +35,13 @@ class Publish(Document): str(km_mapping.name) + '\n' def onload1(self): - current_db_name = frappe.conf.get("db_name") + current_db_name = frappe.conf.get("db_name") # To validate updated procedure status procedure_status = frappe.db.sql("""select p.name,p.update_procedure_status,pro.name,p.variant_mapping,p.system,p.sub_system,p.asset_category,p.item_category,p.variant,p.procedure_link,p.procedure_status,pro.name,pro.workflow_state from {0}.`tabPublish_Docs` as p,{0}.`tabProcedure` as pro where p.parent = '{1}' and p.procedure_link = pro.name and p.procedure_link is not null""".format(current_db_name, self.name), as_dict=True) l = len(procedure_status) - + if procedure_status and self.publish_status == "Published": for x in procedure_status: for y in self.get("publish_documents"): @@ -141,8 +143,8 @@ def cal_ver(vehicle, lang, publish_type, doc): update_procedure(vehicle, lang, publish_type, doc) current_db_name = frappe.conf.get("db_name") doc = frappe.get_doc("Publish", doc) - ver = frappe.db.sql("""select max(version),publish_type from {current_db_name}.tabPublish where vehicle = '{vehi}' and language = '{lang}';""" - .format(current_db_name=current_db_name, vehi=vehicle, lang=lang)) + ver = frappe.db.sql("""select max(version) from `tabPublish` where vehicle = '{vehi}' and language = '{lang}';""" + .format(vehi=vehicle, lang=lang)) v = 0.0 if publish_type == 'Global': if ver[0][0] == None: @@ -176,7 +178,6 @@ def global_publish(doc): if not procedure and not asset: frappe.throw("There is no item for global publish") - publish_type = "Global" publish_record = frappe.new_doc("Publish") publish_record.language = doc.language publish_record.publish_type = "Global" @@ -316,52 +317,57 @@ def variant(doctype, txt, searchfield, start, page_len, filters): @frappe.whitelist() -def update_procedure_value(name): - self = frappe.get_doc("Publish",name) - current_db_name = frappe.conf.get("db_name") - # To validate updated procedure status - procedure_status = frappe.db.sql("""select p.name,p.update_procedure_status,pro.name,p.variant_mapping,p.system,p.sub_system,p.asset_category,p.item_category,p.variant,p.procedure_link,p.procedure_status,pro.name,pro.workflow_state - from {0}.`tabPublish_Docs` as p,{0}.`tabProcedure` as pro - where p.parent = '{1}' and p.procedure_link = pro.name and p.procedure_link is not null""".format(current_db_name, self.name), as_dict=True) - l = len(procedure_status) - - if procedure_status: - for x in procedure_status: - for y in self.get("publish_documents"): - if y.procedure_link: - if x.procedure_link == y.procedure_link and y.update_procedure_status != y.procedure_status: - y.update_procedure_status = x.workflow_state - frappe.db.sql("""update `tabPublish_Docs` set update_procedure_status = %s where parent = %s and procedure_link = %s ; """, ( - x.workflow_state, self.name, x.procedure_link)) - frappe.db.commit() - if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status: - y.update_procedure_status = x.workflow_state - frappe.db.sql("""update `tabPublish_Docs` set update_procedure_status = %s where parent = %s and procedure_link = %s""", ( - x.workflow_state, self.name, x.procedure_link)) - frappe.db.commit() - if y.procedure_status == "Publish Ready": - if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status and not y.excluded_global: - y.excluded_global = "1" - if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status and x.workflow_state == "Draft" and y.procedure_status != "Publish Ready": - y.excluded_internal = "1" - y.save() - frappe.db.commit() +def update_procedure_value(name, file_path): + self = frappe.get_doc("Publish", name) - # Update system and variant mapping ststus - if self.publish_type == "Global": - current_db_name = frappe.conf.get("db_name") - global_publish = frappe.db.sql("""select name from {0}.`tabPublish` where global_publish = '{1}'""".format( - current_db_name, self.name), as_dict=True) - for global_name in global_publish: - update_mapping(self.variant_mapping, global_name.name) + frappe.db.sql( + f'''update `tabPublish` set file_path = '{file_path}' where name = '{name}';''') + frappe.db.commit() + current_db_name = frappe.conf.get("db_name") + # To validate updated procedure status + procedure_status = frappe.db.sql("""select p.name,p.update_procedure_status,pro.name,p.variant_mapping,p.system,p.sub_system, + p.asset_category,p.item_category,p.variant,p.procedure_link,p.procedure_status,pro.name,pro.workflow_state + from {0}.`tabPublish_Docs` as p,{0}.`tabProcedure` as pro where p.parent = '{1}' and + p.procedure_link = pro.name and p.procedure_link is not null""".format(current_db_name, self.name), as_dict=True) + # l = len(procedure_status) - u_id = frappe.get_all( - "User", filters={"name": frappe.session.user}, fields=["username"]) - if u_id: - for i in u_id: - name = i.username - if not self.published_by: - self.published_by = str(name) - frappe.db.set_value( - "Publish", self.name, "published_by", str(name)) - frappe.db.commit() + if procedure_status: + for x in procedure_status: + for y in self.get("publish_documents"): + if y.procedure_link: + if x.procedure_link == y.procedure_link and y.update_procedure_status != y.procedure_status: + y.update_procedure_status = x.workflow_state + frappe.db.sql("""update `tabPublish_Docs` set update_procedure_status = %s where parent = %s and procedure_link = %s ; """, ( + x.workflow_state, self.name, x.procedure_link)) + frappe.db.commit() + if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status: + y.update_procedure_status = x.workflow_state + frappe.db.sql("""update `tabPublish_Docs` set update_procedure_status = %s where parent = %s and procedure_link = %s""", ( + x.workflow_state, self.name, x.procedure_link)) + frappe.db.commit() + if y.procedure_status == "Publish Ready": + if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status and not y.excluded_global: + y.excluded_global = "1" + if x.procedure_link == y.procedure_link and x.workflow_state != y.procedure_status and x.workflow_state == "Draft" and y.procedure_status != "Publish Ready": + y.excluded_internal = "1" + y.save() + frappe.db.commit() + + # Update system and variant mapping ststus + if self.publish_type == "Global": + current_db_name = frappe.conf.get("db_name") + global_publish = frappe.db.sql("""select name from {0}.`tabPublish` where global_publish = '{1}'""".format( + current_db_name, self.name), as_dict=True) + for global_name in global_publish: + update_mapping(self.variant_mapping, global_name.name) + + u_id = frappe.get_all( + "User", filters={"name": frappe.session.user}, fields=["username"]) + if u_id: + for i in u_id: + name = i.username + if not self.published_by: + self.published_by = str(name) + frappe.db.set_value( + "Publish", self.name, "published_by", str(name)) + frappe.db.commit() diff --git a/smart_service/transactions/doctype/publish_docs/__pycache__/__init__.cpython-38.pyc b/smart_service/transactions/doctype/publish_docs/__pycache__/__init__.cpython-38.pyc index b7d15bc..3344284 100644 Binary files a/smart_service/transactions/doctype/publish_docs/__pycache__/__init__.cpython-38.pyc and b/smart_service/transactions/doctype/publish_docs/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/publish_docs/__pycache__/publish_docs.cpython-38.pyc b/smart_service/transactions/doctype/publish_docs/__pycache__/publish_docs.cpython-38.pyc index 98bcf7b..49924ae 100644 Binary files a/smart_service/transactions/doctype/publish_docs/__pycache__/publish_docs.cpython-38.pyc and b/smart_service/transactions/doctype/publish_docs/__pycache__/publish_docs.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/publish_temp_doc/__pycache__/__init__.cpython-38.pyc b/smart_service/transactions/doctype/publish_temp_doc/__pycache__/__init__.cpython-38.pyc index c10ae08..b59f40e 100644 Binary files a/smart_service/transactions/doctype/publish_temp_doc/__pycache__/__init__.cpython-38.pyc and b/smart_service/transactions/doctype/publish_temp_doc/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/publish_temp_doc/__pycache__/publish_temp_doc.cpython-38.pyc b/smart_service/transactions/doctype/publish_temp_doc/__pycache__/publish_temp_doc.cpython-38.pyc index 6a15a9b..8ac1f8a 100644 Binary files a/smart_service/transactions/doctype/publish_temp_doc/__pycache__/publish_temp_doc.cpython-38.pyc and b/smart_service/transactions/doctype/publish_temp_doc/__pycache__/publish_temp_doc.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/publish_variant_mapping_assets/__pycache__/__init__.cpython-38.pyc b/smart_service/transactions/doctype/publish_variant_mapping_assets/__pycache__/__init__.cpython-38.pyc index c33275c..160af87 100644 Binary files a/smart_service/transactions/doctype/publish_variant_mapping_assets/__pycache__/__init__.cpython-38.pyc and b/smart_service/transactions/doctype/publish_variant_mapping_assets/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/publish_variant_mapping_assets/__pycache__/publish_variant_mapping_assets.cpython-38.pyc b/smart_service/transactions/doctype/publish_variant_mapping_assets/__pycache__/publish_variant_mapping_assets.cpython-38.pyc index 9255df0..3a3063d 100644 Binary files a/smart_service/transactions/doctype/publish_variant_mapping_assets/__pycache__/publish_variant_mapping_assets.cpython-38.pyc and b/smart_service/transactions/doctype/publish_variant_mapping_assets/__pycache__/publish_variant_mapping_assets.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/system_mapping/__pycache__/__init__.cpython-38.pyc b/smart_service/transactions/doctype/system_mapping/__pycache__/__init__.cpython-38.pyc index f40107f..940a892 100644 Binary files a/smart_service/transactions/doctype/system_mapping/__pycache__/__init__.cpython-38.pyc and b/smart_service/transactions/doctype/system_mapping/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/system_mapping/__pycache__/system_mapping.cpython-38.pyc b/smart_service/transactions/doctype/system_mapping/__pycache__/system_mapping.cpython-38.pyc index 84612e6..47989a4 100644 Binary files a/smart_service/transactions/doctype/system_mapping/__pycache__/system_mapping.cpython-38.pyc and b/smart_service/transactions/doctype/system_mapping/__pycache__/system_mapping.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/system_mapping_sub_system/__pycache__/__init__.cpython-38.pyc b/smart_service/transactions/doctype/system_mapping_sub_system/__pycache__/__init__.cpython-38.pyc index d966159..957f75c 100644 Binary files a/smart_service/transactions/doctype/system_mapping_sub_system/__pycache__/__init__.cpython-38.pyc and b/smart_service/transactions/doctype/system_mapping_sub_system/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/system_mapping_sub_system/__pycache__/system_mapping_sub_system.cpython-38.pyc b/smart_service/transactions/doctype/system_mapping_sub_system/__pycache__/system_mapping_sub_system.cpython-38.pyc index 5db7507..884d6e2 100644 Binary files a/smart_service/transactions/doctype/system_mapping_sub_system/__pycache__/system_mapping_sub_system.cpython-38.pyc and b/smart_service/transactions/doctype/system_mapping_sub_system/__pycache__/system_mapping_sub_system.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/system_mapping_system_assets/__pycache__/__init__.cpython-38.pyc b/smart_service/transactions/doctype/system_mapping_system_assets/__pycache__/__init__.cpython-38.pyc index 82d1616..75e5868 100644 Binary files a/smart_service/transactions/doctype/system_mapping_system_assets/__pycache__/__init__.cpython-38.pyc and b/smart_service/transactions/doctype/system_mapping_system_assets/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/system_mapping_system_assets/__pycache__/system_mapping_system_assets.cpython-38.pyc b/smart_service/transactions/doctype/system_mapping_system_assets/__pycache__/system_mapping_system_assets.cpython-38.pyc index b0c9945..633c2d5 100644 Binary files a/smart_service/transactions/doctype/system_mapping_system_assets/__pycache__/system_mapping_system_assets.cpython-38.pyc and b/smart_service/transactions/doctype/system_mapping_system_assets/__pycache__/system_mapping_system_assets.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/variant_mapping/__pycache__/__init__.cpython-38.pyc b/smart_service/transactions/doctype/variant_mapping/__pycache__/__init__.cpython-38.pyc index 08e9139..affbedd 100644 Binary files a/smart_service/transactions/doctype/variant_mapping/__pycache__/__init__.cpython-38.pyc and b/smart_service/transactions/doctype/variant_mapping/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/variant_mapping/__pycache__/variant_mapping.cpython-38.pyc b/smart_service/transactions/doctype/variant_mapping/__pycache__/variant_mapping.cpython-38.pyc index f32f2f3..60f95e5 100644 Binary files a/smart_service/transactions/doctype/variant_mapping/__pycache__/variant_mapping.cpython-38.pyc and b/smart_service/transactions/doctype/variant_mapping/__pycache__/variant_mapping.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/variant_mapping_assets/__pycache__/__init__.cpython-38.pyc b/smart_service/transactions/doctype/variant_mapping_assets/__pycache__/__init__.cpython-38.pyc index 6235cdf..c62598e 100644 Binary files a/smart_service/transactions/doctype/variant_mapping_assets/__pycache__/__init__.cpython-38.pyc and b/smart_service/transactions/doctype/variant_mapping_assets/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/transactions/doctype/variant_mapping_assets/__pycache__/variant_mapping_assets.cpython-38.pyc b/smart_service/transactions/doctype/variant_mapping_assets/__pycache__/variant_mapping_assets.cpython-38.pyc index d5449ce..192f76d 100644 Binary files a/smart_service/transactions/doctype/variant_mapping_assets/__pycache__/variant_mapping_assets.cpython-38.pyc and b/smart_service/transactions/doctype/variant_mapping_assets/__pycache__/variant_mapping_assets.cpython-38.pyc differ diff --git a/smart_service/transactions/report/__pycache__/__init__.cpython-38.pyc b/smart_service/transactions/report/__pycache__/__init__.cpython-38.pyc deleted file mode 100644 index a50f4db..0000000 Binary files a/smart_service/transactions/report/__pycache__/__init__.cpython-38.pyc and /dev/null differ diff --git a/smart_service/transactions/report/kilometer_mapping/__pycache__/__init__.cpython-38.pyc b/smart_service/transactions/report/kilometer_mapping/__pycache__/__init__.cpython-38.pyc index 2945143..57033b6 100644 Binary files a/smart_service/transactions/report/kilometer_mapping/__pycache__/__init__.cpython-38.pyc and b/smart_service/transactions/report/kilometer_mapping/__pycache__/__init__.cpython-38.pyc differ diff --git a/smart_service/transactions/report/kilometer_mapping/__pycache__/kilometer_mapping.cpython-38.pyc b/smart_service/transactions/report/kilometer_mapping/__pycache__/kilometer_mapping.cpython-38.pyc index 5ad891f..7b3d6db 100644 Binary files a/smart_service/transactions/report/kilometer_mapping/__pycache__/kilometer_mapping.cpython-38.pyc and b/smart_service/transactions/report/kilometer_mapping/__pycache__/kilometer_mapping.cpython-38.pyc differ diff --git a/smart_service/www/__init__.py b/smart_service/www/__init__.py new file mode 100644 index 0000000..e69de29