Browse Source

TEst PUblish

master
venkataakhil 1 year ago
parent
commit
2f801a6d21
  1. 295
      smart_service/apis/publish_api.py
  2. 326
      smart_service/apis/update_validation.py
  3. 2
      smart_service/masters/doctype/service_kilometers/service_kilometers.js
  4. 2
      smart_service/masters/doctype/vehicle/vehicle.js
  5. 9
      smart_service/transactions/doctype/publish/publish.js

295
smart_service/apis/publish_api.py

@ -16,6 +16,9 @@ base_url = os.path.expanduser(
internal_path = base_url + '/files/json_files/internal/'
global_path = base_url + '/files/json_files/global/'
full_update_path = base_url + '/files/json_files/full_update/'
STATUS = 'status'
ERROR = 'error'
PARAM_MISSING = "Parameter missing :"
def custom_rate_limit(limit, seconds):
@ -58,7 +61,7 @@ def api_procedure(args, publish_type, vehicle, language, version):
val = input_validation(args=args, publish_type=publish_type,
vehicle=vehicle, language=language, version=version)
if val != '':
return {'status': 0, 'error': "Parameter missing :"+val}
return {STATUS: 0, ERROR: PARAM_MISSING+val}
try:
dir1 = base_url + "/files/json_files/"
@ -242,10 +245,6 @@ def json_grouping(args, language):
return dicfinal
def print(sts):
frappe.msgprint(str(sts))
""" New Publish """
@ -257,9 +256,9 @@ def new_publish(args, publish_type, vehicle, language, version):
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 = []
return {STATUS: 0, ERROR: PARAM_MISSING+val}
""" Create Directory for internal,global and full_update publish """
try:
try:
if not os.path.exists(internal_path + vehicle + '/'):
@ -270,26 +269,27 @@ def new_publish(args, publish_type, vehicle, language, version):
os.makedirs(full_update_path + vehicle + '/')
except Exception as e:
return {"status": 0, "error": "Failed to create Folders"}
return {STATUS: 0, ERROR: "Failed to create Folders "}
# JSON generation
""" JSON generation """
json_file = json_grouping(args, language)
file_name = ''
base_file_name = '%s-%s_v%s.json' % (vehicle, language, version)
# File name generation
""" File name generation """
if publish_type.lower() == 'internal':
file_name = internal_path + vehicle + '/' + base_file_name
elif publish_type.lower() == 'global':
file_name = global_path + vehicle + '/' + base_file_name
else:
return {"status": 0, 'error': 'Publish type not available'}
return {STATUS: 0, ERROR: 'Publish type not available'}
# Save file (Internal/Global)
""" Save file (Internal/Global) """
with open(file_name, 'w') as outfile:
outfile.write(json.dumps(json_file))
# get_step_total_count(file_name)
# Remove previous internal publish file
""" Remove previous internal publish file """
if publish_type.lower() == 'internal':
for fil in os.listdir(internal_path + vehicle):
file_val = internal_path + vehicle + '/' + fil
@ -297,17 +297,22 @@ def new_publish(args, publish_type, vehicle, language, version):
if (fil.split('-')[1]).split('_')[0] == language:
os.remove(file_val)
# Generate full update file
""" Generate full update file """
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:
new_full_update_file_name = full_update_path + vehicle + '/' + \
'%s-%s-full_update.json' % (vehicle, language)
""" 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))
with open(new_full_update_file_name, 'w') as outfile:
outfile.write(json.dumps(json_file))
# get_step_total_count(full_update_file_name)
else:
@ -318,14 +323,13 @@ 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)
# test_full_update_file_name = '/home/ubuntu/frappe-bench/sites/guidedsmartservice.com/public/files/json_files/full_update/XUV 0613/XUV 0613-en-full_update.json'
file_flag, final_update_file = merge_json_files(
prev_full_update_file, file_name, full_update_file_name)
# if file_flag:
# return True, file_name.split('public')[1]
# else:
# return False, final_update_file
# get_step_total_count(final_update_file)
# return prev_full_update_file, file_name, new_full_update_file_name
# file_flag, final_update_file = new_merge_json_files(
# prev_full_update_file, file_name, new_full_update_file_name)
return file_flag, final_update_file
return True, file_name.split('public')[1]
except Exception as e:
@ -335,17 +339,23 @@ def new_publish(args, publish_type, vehicle, language, version):
@frappe.whitelist(allow_guest=True)
def merge_json_files(old_json_path, new_json_path, out_file_path):
# old_json_path = '/home/ubuntu/frappe-bench/sites/guidedsmartservice.com/public/files/json_files/full_update/XUV 0613/XUV 0613-en-full_v1.0.json'
# new_json_path = '/home/ubuntu/frappe-bench/sites/guidedsmartservice.com/public/files/json_files/global/XUV 0613/XUV 0613-en_v2.00.json'
# out_file_path = '/home/ubuntu/frappe-bench/sites/guidedsmartservice.com/public/files/json_files/full_update/XUV 0613/XUV 0613-en-full_update_test.json'
# return 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}
# return {status: 0, error: "Parameter missing :" + val}
try:
with open(old_json_path, 'r') as json_file:
data_old = json.load(json_file)
# return data_old
with open(new_json_path, 'r') as json_file1:
data_new = json.load(json_file1)
@ -377,7 +387,6 @@ def merge_json_files(old_json_path, new_json_path, out_file_path):
variant_asset_added.add(variant_asset['file'])
except:
pass
# print('Assets not present in '+variant_new['Variant']['name'])
try:
# variant_new['Variant']['Systems']
for system in variant_new['Variant']['Systems']:
@ -514,7 +523,6 @@ def merge_json_files(old_json_path, new_json_path, out_file_path):
system_added.add(system['system_name'])
except:
pass
# print('Systems not present in '+variant_new['Variant']['name'])
for old_variants in data_old['JSON']:
if old_variants['Variant']['name'] == variant_new['Variant']['name']:
try:
@ -526,7 +534,7 @@ def merge_json_files(old_json_path, new_json_path, out_file_path):
system_added.add(system['system_name'])
except:
pass
# print('Systems not present in '+variant_new['Variant']['name'])
data_consolidated['JSON'].append({'Variant': {"name": variant_new['Variant']['name'],
"variant": variant_new['Variant']['variant'],
"vehicle": variant_new['Variant']['vehicle'],
@ -547,8 +555,224 @@ def merge_json_files(old_json_path, new_json_path, out_file_path):
if variant_old['Variant']['name'] in variant_name and variant_old['Variant']['name'] not in variant_added:
data_consolidated['JSON'].append({'Variant': variant_old['Variant'],
})
json_object = json.dumps(data_consolidated)
with open(out_file_path, "w") as outfile:
outfile.write(json_object)
return True, out_file_path
except Exception as e:
return False, frappe.get_traceback()
# return "Exception in publish"
@frappe.whitelist(allow_guest=True)
def new_merge_json_files(old_json_path, new_json_path, out_file_path):
try:
with open(old_json_path, 'r') as json_file:
data_old = json.load(json_file)
with open(new_json_path, 'r') as json_file1:
data_new = json.load(json_file1)
data_consolidated = {'JSON': []}
variant_name = set()
sub_system_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'])
for variant_new in data_new['JSON']:
if variant_new['Variant']['name'] in variant_name and variant_new['Variant']['name'] not in variant_added:
system_name = set()
system_added = set()
system_list = []
variant_asset_name = set()
variant_asset_added = set()
variant_asset_list = []
try:
# 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:
variant_asset_list.append(variant_asset)
variant_asset_added.add(variant_asset['file'])
except:
pass
try:
# variant_new['Variant']['Systems']
for system in variant_new['Variant']['Systems']:
system_asset_name = set()
system_asset_added = set()
system_asset_list = []
system_name.add(system['system_name'])
if system['system_name'] not in system_added and system['system_name'] in system_name:
sub_system_name = set()
sub_system_added = set()
sub_system_list = []
for subsystem in system['Subsystems']:
sub_system_name.add(subsystem['sub_systems'])
if subsystem['sub_systems'] not in sub_system_added and subsystem['sub_systems'] in sub_system_name:
conf_km_name = set()
conf_km_added = set()
conf_km_list = []
for ck in subsystem['Config Kilometer']:
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']
})
conf_km_added.add(
ck['kilometer_name'])
for old_variants in data_old['JSON']:
if old_variants['Variant']['name'] == variant_new['Variant']['name']:
for old_system in old_variants['Variant']['Systems']:
if old_system['system_name'] == system['system_name']:
for old_sub_system in old_system['Subsystems']:
if old_sub_system['sub_systems'] == subsystem['sub_systems']:
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:
sub_system_list.append(
old_ck)
conf_km_added.add(
old_ck['kilometer_name'])
proc_det_name = set()
proc_det_added = set()
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:
proc_det_list.append({
"procedure_name": pd['procedure_name'],
"steps": pd['steps'],
})
proc_det_added.add(
pd['procedure_name'])
for old_variants in data_old['JSON']:
if old_variants['Variant']['name'] == variant_new['Variant']['name']:
for old_system in old_variants['Variant']['Systems']:
if old_system['system_name'] == system['system_name']:
for old_sub_system in old_system['Subsystems']:
if old_sub_system['sub_systems'] == subsystem['sub_systems']:
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:
sub_system_list.append(
old_pd)
proc_det_added.add(
old_pd['kilometer_name'])
sub_system_list.append({"subSystemdisplayorder": subsystem['subSystemdisplayorder'],
"systems": subsystem['systems'],
"sub_systems": subsystem['sub_systems'],
"symptom": subsystem['symptom'],
"component": subsystem['component'],
"estimated_time": subsystem['estimated_time'],
"rts": subsystem['rts'],
"mat": subsystem['mat'],
"cover_image": subsystem['cover_image'],
"myid": subsystem['myid'],
"active_status": subsystem['active_status'],
"Config Kilometer": conf_km_list,
"procedure_status": subsystem['procedure_status'],
"procedure_link": subsystem['procedure_link'],
"Procedure_details": proc_det_list,
})
sub_system_added.add(
subsystem['sub_systems'])
for old_variants in data_old['JSON']:
if old_variants['Variant']['name'] == variant_new['Variant']['name']:
for old_system in old_variants['Variant']['Systems']:
if old_system['system_name'] == system['system_name']:
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:
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:
system_asset_list.append({"system_asset": asset['system_asset'],
"systemdisplayorder": asset['systemdisplayorder'],
"active_status": asset['active_status'],
})
system_asset_added.add(
asset['system_asset'])
for old_variants in data_old['JSON']:
if old_variants['Variant']['name'] == variant_new['Variant']['name']:
for old_system in old_variants['Variant']['Systems']:
if old_system['system_name'] == system['system_name']:
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:
system_asset_list.append(
old_system_asset)
system_asset_added.add(
old_system_asset['system_asset'])
system_list.append({"systemdisplayorder": system['systemdisplayorder'],
"system_name": system['system_name'],
"icon_file": system['icon_file'],
"myid": system['myid'],
"active_status": system['active_status'],
"Assets": system_asset_list,
"Subsystems": sub_system_list,
"Config Kilometer": conf_km_list,
})
system_added.add(system['system_name'])
except:
pass
for old_variants in data_old['JSON']:
if old_variants['Variant']['name'] == variant_new['Variant']['name']:
try:
old_variants['Variant']['Systems']
for system in old_variants['Variant']['Systems']:
system_name.add(system['system_name'])
if system['system_name'] not in system_added and system['system_name'] in system_name:
system_list.append(system)
system_added.add(system['system_name'])
except:
pass
data_consolidated['JSON'].append({'Variant': {"name": variant_new['Variant']['name'],
"variant": variant_new['Variant']['variant'],
"vehicle": variant_new['Variant']['vehicle'],
"family_code": variant_new['Variant']['family_code'],
"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'],
"Assets": variant_asset_list,
"Systems": system_list
}})
variant_added.add(variant_new['Variant']['name'])
for variant_old in data_old['JSON']:
if variant_old['Variant']['name'] in variant_name and variant_old['Variant']['name'] not in variant_added:
data_consolidated['JSON'].append({'Variant': variant_old['Variant'],
})
return True, data_consolidated
json_object = json.dumps(data_consolidated)
# return True, json_object
with open(out_file_path, "w") as outfile:
outfile.write(json_object)
@ -565,16 +789,14 @@ def new_update(vehicle_list=None):
return rate_res
val = input_validation(vehicle_list=vehicle_list)
if val != '':
return {'status': 0, 'error': "Parameter missing :"+val}
return {STATUS: 0, ERROR: PARAM_MISSING+val}
req_list = json.loads(vehicle_list)
vehicle = req_list['Vehicle']
iid = req_list['InstallationId']
vehicle_data = req_list['VehicleReqList']
list_val = []
json_val = []
for v in vehicle_data:
lang = v['LanguageID']
cur_ver = v['CurrentVersion']
# cur_ver = v['CurrentVersion']
# publish_list = frappe.db.sql(''' SELECT vehicle,`language`,version,publish_type FROM tabPublish where vehicle = '{}'
# and publish_type='Global' AND `language` = '{}';'''.format(vehicle,lang),as_dict=True)
@ -654,6 +876,7 @@ def calculate_total(data):
@frappe.whitelist()
def upv():
frappe.db.sql(
f'''update `tabPublish` set version = 1.00 where name = 'THAR-en -2023-05-21 16:57:54.119826';''')
frappe.db.commit()
# frappe.db.sql(
# f'''update `tabPublish` set version = 1.00 where name = 'THAR-en -2023-05-21 16:57:54.119826';''')
# frappe.db.commit()
return 1

326
smart_service/apis/update_validation.py

@ -11,13 +11,21 @@ base_url = os.path.expanduser(
"~") + "/frappe-bench/sites/" + site_name + "/public"
# Constants
json_ext = ".json"
json_internal_path = "/files/json_files/internal/"
json_global_path = "/files/json_files/global/"
json_full_update_path = "/files/json_files/full_update/"
status = "status"
error = "error"
update_available = 'IsUpdateAvailable'
JSON_EXT = ".json"
JSON_INT_PATH = "/files/json_files/internal/"
JSON_GLOABL_PATH = "/files/json_files/global/"
JSON_FULL_UPDATE_PATH = "/files/json_files/full_update/"
STATUS = "status"
ERROR = "error"
UPDATE_AVAILABLE = 'IsUpdateAvailable'
UPDATE_FAILED = "Update checking Failed"
PARAM_MISSING = "Parameter missing :"
VERSION = 'Version'
CUR_VERSION = 'CurrentVersion'
FILE_ERROR = 'File failed to load'
LANGUAGE = 'Language'
FILE_SIZE = 'FileSize'
JSON_URL = 'JsonURL'
def custom_rate_limit(limit, seconds):
@ -61,10 +69,10 @@ def check_all_vehicle_updates(vehicle_list=None):
if rate_res != 1:
return rate_res
# if vehicle_list == None:
# return {status: 0, error: "Parameter missing: Vehicle List"}
# return {STATUS: 0, ERROR: "Parameter missing: Vehicle List"}
val = input_validation(vehicle_list=vehicle_list)
if val != '':
return {status: 0, error: "Parameter missing:"+val}
return {STATUS: 0, ERROR: PARAM_MISSING+val}
if vehicle_list:
try:
@ -81,7 +89,7 @@ def check_all_vehicle_updates(vehicle_list=None):
if vehicle_data:
for v in vehicle_data:
v_id = v['Vehicle']
current_version = float(v['CurrentVersion'])
current_version = float(v[CUR_VERSION])
data1_global = frappe.db.sql('''SELECT name,format(max(version),2) as version,vehicle_id,language FROM `tabPublish` where vehicle='{}' and language='{}'
and publish_status='Published' and publish_type='Global' and vehicle_status='Active'
order by version ASC;'''.format(v_id, lang), as_dict=1)
@ -91,7 +99,7 @@ def check_all_vehicle_updates(vehicle_list=None):
if data1[0]['version'] is not None:
if current_version == float(data1[0]['version']):
data1[0][update_available] = "false"
data1[0][UPDATE_AVAILABLE] = "false"
vehicle_req_list.append(data1)
else:
if current_version < float(data1_global[0]['version']):
@ -108,8 +116,8 @@ def check_all_vehicle_updates(vehicle_list=None):
data_append = []
try:
for d in data:
d[update_available] = 'true'
d['CurrentVersion'] = float(
d[UPDATE_AVAILABLE] = 'true'
d[CUR_VERSION] = float(
current_version)
data_append.append(d)
vehicle_req_list.append(data_append)
@ -122,16 +130,16 @@ def check_all_vehicle_updates(vehicle_list=None):
response['VehicleReqList'] = vehicle_req_list[0]
return response
else:
return {status: 0, error: "No Vehicles in criteria"}
return {STATUS: 0, ERROR: "No Vehicles in criteria"}
else:
return {status: 0, error: "Invalid Publish Details"}
return {STATUS: 0, ERROR: "Invalid Publish Details"}
else:
return {status: 0, error: "Invalid Publish Details"}
return {STATUS: 0, ERROR: "Invalid Publish Details"}
except Exception as e:
return {status: 0, error: "Failed to fetch updates"}
return {STATUS: 0, ERROR: "Failed to fetch updates"}
else:
return {status: 0, error: "Check argument: vehicle list"}
return {STATUS: 0, ERROR: "Check argument: vehicle list"}
@frappe.whitelist()
@ -140,10 +148,10 @@ def check_vehicle_update(vehicle_list=None):
if rate_res != 1:
return rate_res
# if vehicle_list == None:
# return {status: 0, error: "Parameter missing: Vehicle List"}
# return {STATUS: 0, ERROR: "Parameter missing: Vehicle List"}
val = input_validation(vehicle_list=vehicle_list)
if val != '':
return {status: 0, error: "Parameter missing:"+val}
return {STATUS: 0, ERROR: PARAM_MISSING+val}
if vehicle_list:
try:
@ -162,7 +170,7 @@ def check_vehicle_update(vehicle_list=None):
# Iterate on language
for v in vehicle_data:
l_id = v['LanguageID']
current_version = float(v['CurrentVersion'])
current_version = float(v[CUR_VERSION])
data1_global = frappe.db.sql('''SELECT name,format(max(version),2) as version,vehicle_id,language FROM `tabPublish` where vehicle='{}' and language='{}'
and publish_status='Published' and publish_type='Global' and vehicle_status='Active'
order by version ASC;'''.format(vehicle, l_id), as_dict=1)
@ -173,11 +181,11 @@ def check_vehicle_update(vehicle_list=None):
if data1_global[0]['version']:
if data1[0]['version'] is not None:
if current_version == float(data1[0]['version']):
data1[0][update_available] = "false"
data1[0][UPDATE_AVAILABLE] = "false"
data = {}
data['Language'] = l_id
data[update_available] = 'false'
data['CurrentVersion'] = float(current_version)
data[LANGUAGE] = l_id
data[UPDATE_AVAILABLE] = 'false'
data[CUR_VERSION] = float(current_version)
vehicle_req_list.append(data)
else:
@ -188,63 +196,65 @@ def check_vehicle_update(vehicle_list=None):
try:
for d in data:
try:
file_name = json_full_update_path+vehicle+"/"+vehicle + \
file_name = JSON_FULL_UPDATE_PATH+vehicle+"/"+vehicle + \
"-" + \
d['Language']+"-"+"full_v" + \
str(d['Version'])+json_ext
d[LANGUAGE]+"-"+"full_v" + \
str(d[VERSION])+JSON_EXT
file_size = os.path.getsize(
base_url + file_name)
d['JsonURL'] = file_name
d['FileSize'] = file_size
d[JSON_URL] = file_name
d[FILE_SIZE] = file_size
d['Error'] = None
d[UPDATE_AVAILABLE] = 'true'
except:
except Exception as e:
file_name = None
file_size = None
d['JsonURL'] = file_name
d['FileSize'] = file_size
d['Error'] = 'File failed to load'
d[JSON_URL] = file_name
d[FILE_SIZE] = file_size
d['Error'] = e
d[UPDATE_AVAILABLE] = 'false'
d[update_available] = 'true'
d['CurrentVersion'] = float(
d[CUR_VERSION] = float(
current_version)
vehicle_req_list.append(d)
except Exception as e:
vehicle_req_list.append(
{error: "Update checking Failed"})
{ERROR: UPDATE_FAILED})
elif current_version == (float(data1_global[0]['version'])-1.00):
data = frappe.db.sql('''SELECT name as Name,format(max(version),2) as Version,vehicle_id as Vehicle,language as Language FROM `tabPublish`
where vehicle='{}' and language='{}' and publish_status='Published' and publish_type='Global' and vehicle_status='Active' and Version > '{}'
order by version ASC;'''.format(vehicle, l_id, current_version), as_dict=1)
where vehicle='{}' and language='{}' and publish_status='Published' and publish_type='Global' and vehicle_status='Active'
and Version > '{}' order by version ASC;'''.format(vehicle, l_id, current_version), as_dict=1)
try:
for d in data:
file_name = None
try:
file_name = json_global_path+vehicle+"/" + \
file_name = JSON_GLOABL_PATH+vehicle+"/" + \
vehicle+"-" + \
d['Language']+"_v" + \
str(d['Version'])+json_ext
d[LANGUAGE]+"_v" + \
str(d[VERSION])+JSON_EXT
file_size = os.path.getsize(
base_url + file_name)
d['JsonURL'] = file_name
d['FileSize'] = file_size
d[JSON_URL] = file_name
d[FILE_SIZE] = file_size
d['Error'] = None
d[UPDATE_AVAILABLE] = 'true'
except:
except Exception as e:
# file_name= None
file_size = None
d['JsonURL'] = file_name
d['FileSize'] = file_size
d['Error'] = 'File failed to load'
d[JSON_URL] = file_name
d[FILE_SIZE] = file_size
d['Error'] = e
d[UPDATE_AVAILABLE] = 'false'
d[update_available] = 'true'
d['CurrentVersion'] = float(
d[CUR_VERSION] = float(
current_version)
vehicle_req_list.append(d)
except Exception as e1:
vehicle_req_list.append(
{error: "Update checking Failed"})
{ERROR: UPDATE_FAILED})
elif current_version == float(data1_global[0]['version']):
if current_version < float(data1[0]['version']):
@ -254,31 +264,32 @@ def check_vehicle_update(vehicle_list=None):
try:
for d in data:
try:
file_name = json_internal_path+vehicle+"/" + \
file_name = JSON_INT_PATH+vehicle+"/" + \
vehicle+"-" + \
d['Language']+"_v" + \
str(d['Version']) + \
json_ext
d[LANGUAGE]+"_v" + \
str(d[VERSION]) + \
JSON_EXT
file_size = os.path.getsize(
base_url + file_name)
d['JsonURL'] = file_name
d['FileSize'] = file_size
d[JSON_URL] = file_name
d[FILE_SIZE] = file_size
d['Error'] = None
d[UPDATE_AVAILABLE] = 'true'
except:
except Exception as e:
file_name = None
file_size = None
d['JsonURL'] = file_name
d['FileSize'] = file_size
d['Error'] = 'File failed to load'
d[JSON_URL] = file_name
d[FILE_SIZE] = file_size
d['Error'] = e
d[UPDATE_AVAILABLE] = 'false'
d[update_available] = 'true'
d['CurrentVersion'] = float(
d[CUR_VERSION] = float(
current_version)
vehicle_req_list.append(d)
except Exception as e2:
vehicle_req_list.append(
{error: "Update checking Failed"})
{ERROR: UPDATE_FAILED})
elif (float(data1_global[0]['version'])-1.00) < current_version < float(data1_global[0]['version']):
if current_version < float(data1[0]['version']):
@ -288,37 +299,36 @@ def check_vehicle_update(vehicle_list=None):
try:
for d in data:
try:
file_name = json_global_path+vehicle+"/" + \
file_name = JSON_GLOABL_PATH+vehicle+"/" + \
vehicle+"-" + \
d['Language']+"_v" + \
str(d['Version']) + \
json_ext
d[LANGUAGE]+"_v" + \
str(d[VERSION]) + \
JSON_EXT
file_size = os.path.getsize(
base_url + file_name)
d['JsonURL'] = file_name
d['FileSize'] = file_size
d[JSON_URL] = file_name
d[FILE_SIZE] = file_size
d['Error'] = None
d[UPDATE_AVAILABLE] = 'true'
except:
file_name = json_global_path+vehicle+"/" + \
except Exception as e:
file_name = JSON_GLOABL_PATH+vehicle+"/" + \
vehicle+"-" + \
d['Language']+"_v" + \
str(d['Version']) + \
json_ext
d[LANGUAGE]+"_v" + \
str(d[VERSION]) + \
JSON_EXT
file_size = None
d['JsonURL'] = file_name
d['FileSize'] = file_size
d['Error'] = 'File failed to load'
d[JSON_URL] = file_name
d[FILE_SIZE] = file_size
d['Error'] = e
d[UPDATE_AVAILABLE] = 'false'
d[update_available] = 'true'
d['CurrentVersion'] = float(
d[CUR_VERSION] = float(
current_version)
vehicle_req_list.append(d)
except Exception as e2:
vehicle_req_list.append(
{error: "Update checking Failed"})
# else:
# vehicle_req_list.append({"error2":"Else"})
{ERROR: UPDATE_FAILED})
elif current_version > float(data1_global[0]['version']):
if current_version < float(data1[0]['version']):
@ -328,41 +338,42 @@ def check_vehicle_update(vehicle_list=None):
try:
for d in data:
try:
file_name = json_internal_path+vehicle+"/" + \
file_name = JSON_INT_PATH+vehicle+"/" + \
vehicle+"-" + \
d['Language']+"_v" + \
str(d['Version']) + \
json_ext
d[LANGUAGE]+"_v" + \
str(d[VERSION]) + \
JSON_EXT
file_size = os.path.getsize(
base_url + file_name)
d['JsonURL'] = file_name
d['FileSize'] = file_size
d[JSON_URL] = file_name
d[FILE_SIZE] = file_size
d['Error'] = None
d[UPDATE_AVAILABLE] = 'true'
except:
file_name = json_internal_path+vehicle+"/" + \
except Exception as e:
file_name = JSON_INT_PATH+vehicle+"/" + \
vehicle+"-" + \
d['Language']+"_v" + \
str(d['Version']) + \
json_ext
d[LANGUAGE]+"_v" + \
str(d[VERSION]) + \
JSON_EXT
file_size = None
d['JsonURL'] = file_name
d['FileSize'] = file_size
d['Error'] = 'File failed to load'
d[JSON_URL] = file_name
d[FILE_SIZE] = file_size
d['Error'] = e
d[UPDATE_AVAILABLE] = 'false'
d[update_available] = 'true'
d['CurrentVersion'] = float(
d[CUR_VERSION] = float(
current_version)
vehicle_req_list.append(d)
except Exception as e3:
vehicle_req_list.append(
{'Error': "Update checking Failed"})
{'Error': UPDATE_FAILED})
# else:
# vehicle_req_list.append({'Error':"Else 3"})
else:
vehicle_req_list.append(
{'Language': l_id, update_available: 'false', 'CurrentVersion': float(current_version)})
{LANGUAGE: l_id, UPDATE_AVAILABLE: 'false', CUR_VERSION: float(current_version)})
else:
data = frappe.db.sql('''SELECT name as Name,format(max(version),2) as Version,vehicle_id as Vehicle,language as Language FROM `tabPublish`
where vehicle='{}' and language='{}' and publish_status='Published' and publish_type='{}' and vehicle_status='Active'
@ -370,40 +381,41 @@ def check_vehicle_update(vehicle_list=None):
try:
for d in data:
try:
file_name = json_internal_path+vehicle+"/" + \
vehicle+"-"+d['Language'] + \
"_v"+str(d['Version'])+json_ext
file_name = JSON_INT_PATH+vehicle+"/" + \
vehicle+"-"+d[LANGUAGE] + \
"_v"+str(d[VERSION])+JSON_EXT
file_size = os.path.getsize(
base_url + file_name)
d['JsonURL'] = file_name
d['FileSize'] = file_size
d[JSON_URL] = file_name
d[FILE_SIZE] = file_size
d['Error'] = None
d[UPDATE_AVAILABLE] = 'true'
except:
file_name = None
file_size = None
d['JsonURL'] = file_name
d['FileSize'] = file_size
d['Error'] = 'File failed to load'
d[JSON_URL] = file_name
d[FILE_SIZE] = file_size
d['Error'] = FILE_ERROR
d[UPDATE_AVAILABLE] = 'false'
d[update_available] = 'true'
d['CurrentVersion'] = float(current_version)
d[CUR_VERSION] = float(current_version)
vehicle_req_list.append(d)
except Exception as e2:
vehicle_req_list.append(
{error: "Update checking Failed"})
{ERROR: UPDATE_FAILED})
response['Vehicle'] = vehicle
response['VehicleReqList'] = vehicle_req_list
return response
else:
response['JSON'] = {status: 0, error: "Data Not available"}
response['JSON'] = {STATUS: 0, ERROR: "Data Not available"}
return response
except Exception as e:
response['JSON'] = {status: 0, error: "Update checking Failed"}
response['JSON'] = {STATUS: 0, ERROR: UPDATE_FAILED}
return response
else:
return {status: 0, error: "Check Parameter: vehicle list"}
return {STATUS: 0, ERROR: "Check Parameter: vehicle list"}
def get_step_total_count(json_path):
@ -464,84 +476,6 @@ def calculate_step(data):
return data
@frappe.whitelist()
def check_vehicle_update11(vehicle_list=None):
val = input_validation(vehicle_list=vehicle_list)
if val != '':
return {status: 0, error: "Parameter missing:"+val}
# if vehicle_list == None:
# return {status: 0, error: "Parameter missing: Vehicle List"}
vehicle_req_list = []
if vehicle_list:
response = {}
req_list = json.loads(vehicle_list)
response['Vehicle'] = req_list['Vehicle']
vehicle = req_list['Vehicle']
iid = req_list['InstallationId']
vehicle_data = req_list['VehicleReqList']
publish_type = frappe.db.get_list(
'App Device', filters={'name': iid}, fields='publish_type')
if len(publish_type) > 0:
publish_type = publish_type[0]['publish_type']
# Iterate over language
if publish_type == 'Internal':
for v in vehicle_data:
global_ver = frappe.db.sql('''SELECT format(max(version),2) as version,publish_type as version,vehicle_id,language FROM `tabPublish` where vehicle='{}'
and language='{}' and publish_status='Published' and vehicle_status='Active'
and publish_type = 'Global' ;'''.format(vehicle, l_id), as_dict=1)
if global_ver:
global_pub_ver = global_pub_ver['version']
l_id = v['LanguageID']
cur_ver = v['CurrentVersion']
pub_ver = get_publish_ver(vehicle, l_id)
if cur_ver == pub_ver['version']:
vehicle_req_list.append({'Language': l_id, update_available: 'false',
'CurrentVersion': float(cur_ver)})
# Global File
else:
for v in vehicle_data:
l_id = v['LanguageID']
cur_ver = v['CurrentVersion']
global_pub = frappe.db.sql('''SELECT format(max(version),2) as version,publish_type, vehicle_id,language FROM `tabPublish` where vehicle='{}'
and language='{}' and publish_status='Published' and vehicle_status='Active'
and publish_type = 'Global' ;'''.format(vehicle, l_id), as_dict=1)
if global_pub:
global_pub_ver1 = float(global_pub[0]['version'])
if global_pub_ver1 == cur_ver:
vehicle_req_list.append({'Language': l_id, update_available: 'false',
'CurrentVersion': float(cur_ver)})
else:
if cur_ver < global_pub_ver1:
if (global_pub_ver1 - cur_ver) > 1:
file_name = json_full_update_path+vehicle+"/"+vehicle + \
"-" + l_id + "-" + "full_v" + \
str(global_pub[0]['version'])+json_ext
file_size = os.path.getsize(
base_url + file_name)
vehicle_req_list.append({'Version': global_pub_ver1, 'Language': l_id, update_available: 'true', 'JsonURL': file_name, 'FileSize': file_size,
'Error': None, 'CurrentVersion': float(cur_ver)})
else:
file_name = json_global_path+vehicle+"/"+vehicle + \
"-" + l_id + "_v" + \
str(global_pub[0]['version'])+json_ext
file_size = os.path.getsize(
base_url + file_name)
vehicle_req_list.append({'Version': global_pub_ver1, 'Language': l_id, update_available: 'true', 'JsonURL': file_name, 'FileSize': file_size,
'Error': None, 'CurrentVersion': float(cur_ver)})
else:
vehicle_req_list.append({'Language': l_id, update_available: 'false',
'CurrentVersion': float(cur_ver)})
return vehicle_req_list
def get_publish_ver(vehicle, l_id):
return frappe.db.sql('''SELECT format(max(version),2) as version,publish_type as version,vehicle_id,language FROM `tabPublish` where vehicle='{}' and language='{}' and
publish_status='Published' and vehicle_status='Active' ;'''.format(vehicle, l_id), as_dict=1)
@ -554,16 +488,16 @@ def update_completed(FileName=None):
return rate_res
val = input_validation(FileName=FileName)
if val != '':
return {status: 0, error: "Parameter missing:"+val}
return {STATUS: 0, ERROR: "Parameter missing:"+val}
if FileName:
try:
os.remove(base_url + FileName)
return {'isSuccessful': True}
except Exception as e:
return {'isSuccessful': False, status: 0, 'error': e}
return {'isSuccessful': False, STATUS: 0, 'ERROR': e}
else:
return {status: 0, error: "Parameter: FileName is null"}
return {STATUS: 0, ERROR: "Parameter: FileName is null"}
@frappe.whitelist()

2
smart_service/masters/doctype/service_kilometers/service_kilometers.js

@ -31,7 +31,7 @@ frappe.ui.form.on('Service Kilometers', {
var regex = /[!@#$%^&*()_+\=\[\]{};~`':"\\|.<>\/?]+/;
if (frm.doc.kilometer) {
if (regex.test(frm.doc.kilometer) === true) {
frappe.throw(__("<b>Service Kilometer:</b> Only letters, numbers and <b> ,</b> are allowed."));
frappe.throw(__("<b>Service Kilometer:</b> Only letters, numbers and <b> / - , </b> are allowed."));
frappe.validated = false;
} else if ((frm.doc.kilometer.includes("'"))) {
frappe.throw(__("<b>Service Kilometer:</b> Only letters, numbers and <b> ,</b> are allowed."));

2
smart_service/masters/doctype/vehicle/vehicle.js

@ -88,7 +88,7 @@ frappe.ui.form.on('Vehicle', {
frappe.msgprint(__("Just a <b>.</b> is not prescribed!"));
frappe.validated = false;
}
var regex = /[!@#$%^&*()_+\=\[\]{};'`~:"\\|.<>\/?]+/;
var regex = /[!@#$%^&*()_+\=\[\]{};'`~:"\\|.<>\/?]+/;
if (frm.doc.vehicle) {
if (regex.test(frm.doc.vehicle) === true) {
frappe.msgprint(__("<b>Vehicle:</b> Only letters, numbers and <b> -,</b> are allowed."));

9
smart_service/transactions/doctype/publish/publish.js

@ -15,7 +15,7 @@ cur_frm.fields_dict['vehicle'].get_query = function (doc, cdt, cdn) {
return { query: "smart_service.masters.doctype.vehicle.vehicle.vehicle_filter", };
};
var lang_set_first_time = true;
let lang_set_first_time = true;
frappe.ui.form.on('Publish', {
onload: function (frm) {
$(document).on('mouseover', function (events) {
@ -28,7 +28,7 @@ frappe.ui.form.on('Publish', {
},
planned_publish_date: function (frm) {
var date = (frappe.datetime.nowdate())
let date = (frappe.datetime.nowdate())
if (frm.doc.planned_publish_date < date) {
frm.doc.planned_publish_date = '';
cur_frm.refresh_fields();
@ -271,7 +271,8 @@ frappe.ui.form.on('Publish', {
frm.fields_dict.variant_mapping_assets.grid.grid_buttons.find('.btn-custom').removeClass('btn-default').addClass('btn-primary');
}
if (frm.doc.docstatus == 1) {
$(".grid-buttons").hide();
$(".grid-buttons").hide();
}
},
validate: function (frm) {
@ -279,7 +280,7 @@ frappe.ui.form.on('Publish', {
if (regex.test(frm.doc.release_description) === true) {
frm.doc.release_description = '';
frm.refresh_fields();
frappe.msgprint(__("<b>Publish Description:</b> Only letters, numbers and <b> / - () & , ' : </b> are allowed."));
frappe.msgprint(__("<b>Publish Description:</b> Only letters, numbers and <b> / - () & , ' : </b> are allowed."));
}
if (frm.doc.vehicle && frm.doc.release_description && frm.fields_dict.publish_documents.grid.grid_rows.length === 0) {

Loading…
Cancel
Save