Browse Source

Publish pHase 2 api integration

version2
venkataakhil 1 year ago
parent
commit
fbd0c484ca
  1. 7
      smart_service/apis/master_api.py
  2. 7
      smart_service/apis/update_validation.py
  3. 49
      smart_service/apis/v2/master.py
  4. 4
      smart_service/phase_2/doctype/module_publish_mapping/module_publish_mapping.json
  5. 99
      smart_service/transactions/doctype/publish/publish.js
  6. 4
      smart_service/transactions/doctype/publish/publish.json
  7. 91
      smart_service/transactions/doctype/publish/publish.py

7
smart_service/apis/master_api.py

@ -402,12 +402,7 @@ def app_modules(LSD):
@frappe.whitelist(methods=["POST"], allow_guest=1)
def role_mapping():
# logger_file = f'Role Mapping'
# logger = frappe.logger(logger_file, allow_site=True, file_count=100)
# logger.info(f'Start')
req = json.loads(frappe.request.data)
try:
lsdt = req['LSD']
if lsdt != '':
@ -435,9 +430,7 @@ def role_mapping():
for r in role_maping_details:
role_list = r['modules'].split(",")
# logger.info(f'Module data-{module_details1}')
modules = copy.deepcopy(module_details1)
# logger.info(f'Module-{modules}')
for m in modules:
if m['module_name'] in role_list:
m['active_status'] = 1

7
smart_service/apis/update_validation.py

@ -2,14 +2,15 @@ import frappe
from frappe.model.document import Document
import json
import os
from frappe.utils import cstr
import time
from smart_service.apis.app_user_login import input_validation
current_db_name = frappe.conf.get("db_name")
from frappe.utils import cstr
site_name = cstr(frappe.local.site)
base_url = os.path.expanduser(
"~") + "/frappe-bench/sites/" + site_name + "/public"
current_db_name = frappe.conf.get("db_name")
# Constants
JSON_EXT = ".json"
JSON_INT_PATH = "/files/json_files/internal/"

49
smart_service/apis/v2/master.py

@ -4,8 +4,12 @@ from urllib import request
import datetime
from frappe import utils
import json
import os
from smart_service.apis.app_user_login import input_validation
from frappe.utils import cstr
site_name = cstr(frappe.local.site)
BASE_URL = os.path.expanduser(
"~") + "/frappe-bench/sites/" + site_name + "/public"
date_format = "%Y-%m-%d %H:%M:%S.%f"
current_db_name = frappe.conf.get("db_name")
@ -174,6 +178,49 @@ def new_publish():
return {'status': 0, 'error': "Parameter's missing: " + str(e), 'data': None}
@frappe.whitelist(methods=['POST'])
def new_publish1():
req = json.loads(frappe.request.data)
try:
module = req['module']
iid = req['iid']
vehicle = req['vehicle']
variant = req['variant']
language = req['language']
data = []
# Get Publish Type
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']
BASE_PATH = BASE_URL + "/files/json_files/phase2/" + \
str(vehicle) + '/' + str(language) + '/' + str(publish_type) + '/'
if module == 'Feature Finder':
with open(BASE_PATH + str(vehicle) + '-feature_finder.json') as outfile:
data = json.load(outfile)
data = data['data']
elif module == 'Repair/Service Check Sheet':
with open(BASE_PATH + str(vehicle) + '-repair_check_sheet.json') as outfile:
data = json.load(outfile)
data = data['data']
# elif module == 'Training Information':
# flag, data = get_training_information(vehicle, language)
# elif module == "Mahindra Special Tool Information":
# flag, data = get_special_tool_information(vehicle)
return {'status': 1, 'error': None, 'data': data}
except Exception as e:
frappe.local.response['http_status_code'] = 400
return {'status': 0, 'error': "Parameter's missing: " + str(e), 'data': None}
@frappe.whitelist(methods=['POST'], allow_guest=1)
def get_special_tool_information(vehicle):
try:

4
smart_service/phase_2/doctype/module_publish_mapping/module_publish_mapping.json

@ -1,7 +1,7 @@
{
"actions": [],
"allow_rename": 1,
"autoname": "format:{vehicle}-{variant}-{language}",
"autoname": "format:{variant}-{language}",
"creation": "2023-08-07 12:44:24.978007",
"doctype": "DocType",
"editable_grid": 1,
@ -107,7 +107,7 @@
],
"index_web_pages_for_search": 1,
"links": [],
"modified": "2023-08-07 12:52:27.310290",
"modified": "2023-08-18 16:49:35.315359",
"modified_by": "Administrator",
"module": "Phase-2",
"name": "Module Publish Mapping",

99
smart_service/transactions/doctype/publish/publish.js

@ -62,6 +62,34 @@ frappe.ui.form.on('Publish', {
debugger
$('[data-route="Form/Publish/' + frm.doc.name + '"]').find('.primary-action').html("Global Publish")
}
if (frm.doc.docstatus === 1 && frm.doc.publish_type == "Internal" && frm.doc.publish_status == 'Published' && frm.doc.publish_module!='Automotive System' && !frm.doc.global_publish && frappe.user.has_role('_Publisher')) {
debugger
frappe.call({
method: "smart_service.transactions.doctype.publish.publish.max_publish_new_module",
args: {
"doc": frm.doc.name,
},
callback: function (r) {
if (r.message==frm.doc.version) {
debugger
if (r.message == frm.doc.version) {
frm.add_custom_button(__('Global Publish'), function () {
frappe.call({
method: "smart_service.transactions.doctype.publish.publish.generate_global_publish",
args: {
"name": frm.doc.name,
},
callback: function (r) {
cur_frm.reload_doc();
}
});
}).addClass("btn-warning").css({ 'background-color': '#f5b0cd', 'color': 'black' });
}
}
}
})
}
if (frm.doc.publish_module == 'Automotive System') {
cur_frm.set_df_property('system_mapping', "read_only", 1);
cur_frm.fields_dict['system_mapping'].grid.wrapper.find('.grid-add-row').hide();
@ -314,64 +342,23 @@ frappe.ui.form.on('Publish', {
}
if (frm.doc.docstatus == 1 && !frm.is_new() && frm.doc.publish_type != "Global" && frm.doc.publish_module != 'Automotive System') {
if (frm.doc.docstatus == 1 && frm.doc.publish_status == 'To Publish' && !frm.is_new() && frm.doc.publish_type != "Global" && frm.doc.publish_module != 'Automotive System') {
debugger
frappe.call({
method: "smart_service.transactions.doctype.publish.publish.max_publish_new_module",
args: {
"doc": frm.doc.name
},
callback: function (r) {
debugger
if (r.message) {
debugger
if (r.message) {
frm.add_custom_button(__('Global Publish'), function () {
frappe.call({
method: "smart_service.transactions.doctype.publish.publish.generate_global_publish",
args: {
name: frm.doc.name
},
callback: function (r) {
if (r.message.status == "success") {
window.location.href = r.message.url + "/app/publish" + "/" + r.message.message
}
}
})
}).addClass("btn-primary");
}
}
}
})
frappe.call({
method: "smart_service.transactions.doctype.publish.publish.max_publish_new_module",
method: "smart_service.transactions.doctype.publish.publish.cal_ver_new_module",
args: {
"doc": frm.doc.name,
vehicle: frm.doc.vehicle,
lang: frm.doc.language,
publish_type: frm.doc.publish_type,
doc: frm.doc.name
},
callback: function (r) {
debugger
if (r.message) {
debugger
if (r.message) {
frm.add_custom_button(__('Global Publish'), function () {
frappe.call({
method: "smart_service.transactions.doctype.publish.publish.generate_global_publish",
args: {
name: frm.doc.name
},
callback: function (r) {
if (r.message.status == "success") {
frm.set_value('version', r.message);
cur_frm.refresh_field('version')
frm.set_value('actual_published_date', frappe.datetime.nowdate());
window.location.href = r.message.url + "/app/publish" + "/" + r.message.message
}
}
})
}).addClass("btn-primary");
}
}
}
})
@ -409,6 +396,7 @@ frappe.ui.form.on('Publish', {
},
variant_mapping: function (frm) {
frappe.db.get_value('Variant Mapping', { name: frm.doc.variant_mapping }, ['fuel', 'transmission', 'drive'], (r) => {
frm.doc.variant = r.fuel + ',' + r.transmission + ',' + r.drive;
cur_frm.refresh_field('variant');
@ -417,7 +405,7 @@ frappe.ui.form.on('Publish', {
add_feature_finder(frm)
}
if (frm.doc.publish_module=='Automotive System') {
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") {
@ -447,6 +435,7 @@ frappe.ui.form.on('Publish', {
});
}
})
}
},
km_active_status: function (frm) {
@ -559,7 +548,10 @@ frappe.ui.form.on('Publish', {
}
},
km_report: function (frm, cdt, cdn) {
if (frm.doc.publish_module=='Automotive System') {
frappe.set_route("query-report", 'Kilometer Mapping', { 'kilometer_mapping': frm.doc.kilometer_mapping });
}
},
after_save: function (frm) {
frm.set_df_property('repair_checksheet_publish', 'hidden', 0)
@ -716,6 +708,8 @@ frappe.ui.form.on('Publish_Temp Doc', {
})
function add_to_publish(frm) {
cur_frm.clear_table("repair_checksheet_publish")
cur_frm.refresh_fields();
if(frm.doc.vehicle){
frappe.call({
method: "smart_service.transactions.doctype.publish.publish.get_service_repair",
@ -749,7 +743,8 @@ function add_to_publish(frm) {
}
function add_feature_finder(frm){
debugger
cur_frm.clear_table("feature_finder_publish")
cur_frm.refresh_fields();
frappe.call({
method: "smart_service.transactions.doctype.publish.publish.get_feature_finder",
args: { vehicle: frm.doc.vehicle,variant:frm.doc.variant_mapping, language_label: frm.doc.language, publish_type: frm.doc.publish_type },

4
smart_service/transactions/doctype/publish/publish.json

@ -315,7 +315,7 @@
"fieldname": "publish_module",
"fieldtype": "Select",
"label": "Module",
"options": "\nAutomotive System\nRepair service\nFeature Finder",
"options": "\nAutomotive System\nFeature Finder\nRepair service",
"reqd": 1
},
{
@ -336,7 +336,7 @@
"index_web_pages_for_search": 1,
"is_submittable": 1,
"links": [],
"modified": "2023-08-17 10:11:07.549614",
"modified": "2023-08-18 13:01:25.808160",
"modified_by": "Administrator",
"module": "Transactions",
"name": "Publish",

91
smart_service/transactions/doctype/publish/publish.py

@ -15,7 +15,7 @@ sys.tracebacklimit = 0
site_name = cstr(frappe.local.site)
base_url = os.path.expanduser(
"~") + "/frappe-bench/sites/" + site_name + "/public" + "/files" + "/json_files" + "/Other_Module"
"~") + "/frappe-bench/sites/" + site_name + "/public" + "/files" + "/json_files" + "/phase2"
frappe.utils.logger.set_log_level("DEBUG")
success_reponse = {"status": 1, "data": "", "message": ""}
@ -54,13 +54,15 @@ class Publish(Document):
self.language, self.publish_type,
self.release_description, self.variant,
self.repair_checksheet_publish)
# update_publish_status = frappe.db.sql(
# """update `tabPublish` set publish_status='Published' where name='{0}'""".format(self.name))
update_publish_status = frappe.db.sql(
"""update `tabPublish` set publish_status='Published' where name='{0}'""".format(self.name))
if self.docstatus == 1 and self.publish_status == 'To Publish' and self.publish_module == 'Feature Finder' and self.publish_type == 'Internal' and self.feature_finder_publish:
feature_finder_publish(self.vehicle, self.vehicle_id,
self.language, self.publish_type,
self.release_description, self.feature_finder_publish, self.variant)
update_publish_status = frappe.db.sql(
"""update `tabPublish` set publish_status='Published' where name='{0}'""".format(self.name))
if self.docstatus == 1 and self.publish_module == 'Feature Finder' and self.publish_type == 'Global':
feature_finder_publish(self.vehicle, self.vehicle_id,
@ -70,7 +72,7 @@ class Publish(Document):
update_feature_published_docs(self)
update_publish_status = frappe.db.sql(
"""update `tabPublish` set publish_status='Published' where name='{0}'""".format(self.name))
if self.docstatus == 1 and self.publish_status == 'To Publish' and self.publish_module == 'Repair service' and self.publish_type == 'Global':
if self.docstatus == 1 and self.publish_status == 'To Publish' and self.publish_module == 'Repair service' and self.publish_type == 'Global' and self.repair_checksheet_publish:
repair_checksheet_publish(self.vehicle, self.vehicle_id,
self.language, self.publish_type,
self.release_description, self.variant,
@ -78,6 +80,7 @@ class Publish(Document):
update_repair_published_docs(self)
update_publish_status = frappe.db.sql(
"""update `tabPublish` set publish_status='Published' where name='{0}'""".format(self.name))
def onload1(self):
current_db_name = frappe.conf.get("db_name")
# To validate updated procedure status
@ -244,7 +247,7 @@ def global_publish(doc):
publish_record.vehicle = doc.vehicle
publish_record.vehicle_id = doc.vehicle_id
publish_record.variant_mapping = doc.variant_mapping
publish_record.publish_module=doc.publish_module
publish_record.publish_module = 'Automotive System'
publish_record.variant_mapping_status = doc.variant_mapping_status
publish_record.kilometer_mapping = doc.kilometer_mapping
publish_record.km_active_status = doc.km_active_status
@ -278,17 +281,19 @@ def global_publish(doc):
def generate_global_publish(name):
try:
res = frappe.get_doc("Publish", name)
ret = frappe.get_doc({
"doctype": "Publish",
"vehicle": res.vehicle,
"publish_type": "Global",
"language": res.language,
"publish_status": "To Publish",
"release_description": res.release_description,
"publish_module": res.publish_module,
"feature_finder_publish": res.feature_finder_publish,
"repair_checksheet_publish": res.repair_checksheet_publish
})
ret.insert()
ret.save()
return {"status": "success", "message": ret.name, "url": frappe.utils.get_url()}
except Exception as e:
frappe.throw(str(e))
@ -457,6 +462,7 @@ def update_procedure_value(name, file_path):
"Publish", self.name, "published_by", str(name))
frappe.db.commit()
def update_feature_published_docs(self):
try:
@ -468,6 +474,8 @@ def update_feature_published_docs(self):
except Exception as e:
frappe.throw(str(e))
def update_repair_published_docs(self):
try:
@ -498,6 +506,7 @@ def create_publish_folders(folder_url):
'''New Module Publish Section'''
@frappe.whitelist()
def get_service_repair(vehicle,
language_label, publish_type):
@ -506,10 +515,12 @@ def get_service_repair(vehicle,
''', as_dict=1)
return data
@frappe.whitelist()
def get_feature_finder(vehicle, variant, language_label):
try:
data=frappe.db.sql(f"""select * from `tabFeature Finder` where vehicle='{vehicle}' and variant_id='{variant}' and language='{language_label}' and is_published=0""",as_dict=1)
data = frappe.db.sql(
f"""select * from `tabFeature Finder` where vehicle='{vehicle}' and variant_id='{variant}' and language='{language_label}' and is_published=0""", as_dict=1)
return data
except Exception as e:
return str(e)
@ -560,7 +571,8 @@ def repair_checksheet_publish(vehicle, vehicle_id,
repair_checksheet_tmp.append(
repair_checksheet['data'][0])
repair_checksheet_tmp=get_latest_data({'data':published_data['data']},{'data':repair_checksheet_tmp})
repair_checksheet_tmp = get_latest_data({'data': published_data['data']}, {
'data': repair_checksheet_tmp})
else:
for i in parent:
@ -573,7 +585,8 @@ def repair_checksheet_publish(vehicle, vehicle_id,
repair_checksheet_tmp.append(
repair_checksheet['data'][0])
# frappe.msgprint(str(repair_checksheet['data'][0]))
repair_checksheet_tmp=get_latest_data({'data':repair_checksheet_tmp},{'data':[]})
repair_checksheet_tmp = get_latest_data(
{'data': repair_checksheet_tmp}, {'data': []})
if publish_repair_checksheet == 1:
""" Save publish file """
@ -589,6 +602,7 @@ def repair_checksheet_publish(vehicle, vehicle_id,
f'{vehicle} - {language} - {publish_type} error in json creation' + str(e))
frappe.throw('Failed To Publish')
def feature_finder_publish(vehicle=None, vehicle_id=None,
language=None, publish_type=None,
release_description=None, parent=None,
@ -637,7 +651,8 @@ def feature_finder_publish(vehicle=None,vehicle_id=None,
feature_finder_tmp.append(
feature_finder['data'][0])
repair_checksheet_tmp=get_latest_data({'data':published_data['data']},{'data':feature_finder_tmp})
repair_checksheet_tmp = get_latest_data(
{'data': published_data['data']}, {'data': feature_finder_tmp})
else:
@ -653,28 +668,26 @@ def feature_finder_publish(vehicle=None,vehicle_id=None,
else:
frappe.throw('failed to publish')
feature_finder_tmp=get_latest_data({'data':feature_finder_tmp},{'data':[]})
feature_finder_tmp = get_latest_data(
{'data': feature_finder_tmp}, {'data': []})
# if publish_feature_finder == 1:
""" Save publish file """
vehicle_data['data'] = feature_finder_tmp
with open(file_path, 'w') as outfile:
outfile.write(json.dumps(vehicle_data, indent=4, default=str))
logger.info(
f'Repair Checksheet Data Append Start::{vehicle}-{language}-{publish_type}')
return 1, file_path
except Exception as e:
logger.info(
f'{vehicle} - {language} - {publish_type} - {module_name} error in json creation' + str(e))
frappe.throw('Failed To Publish')
def get_key_value_data(data):
module_dic = {}
for d in data['data']:
@ -819,35 +832,37 @@ def feature_finder_data(vehicle=None, language=None,
logger.error('error in repair checksheet' + str(e))
return failure_reponse
@frappe.whitelist()
def max_publish_new_module(doc):
doc = frappe.get_doc("Publish", doc)
ver = frappe.db.sql("""select max(creation) from {0}.tabPublish where vehicle = "{1}" and language = "{2}";""".format(
ver = frappe.db.sql("""select max(version) from {0}.tabPublish where vehicle = "{1}" and language = "{2}" and publish_module!="Automotive System";""".format(
current_db_name, doc.vehicle, doc.language))
if ver:
return ver
# @frappe.whitelist()
# def cal_ver_new_module(vehicle, lang, publish_type, doc):
# current_db_name = frappe.conf.get("db_name")
# doc = frappe.get_doc("Publish", doc)
# ver = frappe.db.sql(f"""select max(creation) from `tabPublish` where vehicle = "{vehicle}" and language = "{lang}";""",as_dict=1)
# v = 0.0
# if publish_type == 'Global':
# if ver[0][0] == None:
# v = 1.0
# else:
# v = int(float(ver[0][0])) + 1.0
@frappe.whitelist()
def cal_ver_new_module(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) from `tabPublish` where vehicle = "{vehi}" and language = "{lang}" and publish_module!="Automotive System";"""
.format(vehi=vehicle, lang=lang))
v = 0.0
if publish_type == 'Global':
if ver[0][0] == None:
v = 1.0
else:
v = int(float(ver[0][0])) + 1.0
# elif publish_type == 'Internal':
# if ver[0][0] == None:
# v = 0.01
# else:
# v = float(ver[0][0]) + 0.01
# v = "{:.2f}".format(v)
# doc.version = v
# frappe.db.sql("""update {0}.`tabPublish` set version = "{1}" where name = "{2}";""".format(
# current_db_name, v, doc.name))
# frappe.db.commit()
# return v
elif publish_type == 'Internal':
if ver[0][0] == None:
v = 0.01
else:
v = float(ver[0][0]) + 0.01
v = "{:.2f}".format(v)
doc.version = v
frappe.db.sql("""update {0}.`tabPublish` set version = "{1}" where name = "{2}";""".format(
current_db_name, v, doc.name))
frappe.db.commit()
return v

Loading…
Cancel
Save