Source code for master.network.nn_common_manager

from django.core import serializers as serial
from django.db.models import Max
from master import models
from master import serializers
from django.db import connection
from common.utils import dictfetchall
import json

[docs]class NNCommonManager : """ 1. desc : CRUD function for Network Info 2. table NN_DEF_LIST_INFO NN_VER_WFLIST_INFO NN_VER_BATCHLIST_INFOs """
[docs] def get_nn_id_max(self): try: query_set = models.NN_DEF_LIST_ID_INFO.objects.filter().aggregate(Max('id')) return_value = query_set['id__max'] if query_set['id__max'] == None: return_value = 0 return return_value except Exception as e: raise Exception(e)
[docs] def get_nn_id_info(self, nn_id): """ update nn_info :param nn_id: :param obj : json object :return: """ try: query_set = models.NN_DEF_LIST_INFO.objects.filter(nn_id=nn_id) query_set = serial.serialize("json", query_set) return json.loads(query_set) except Exception as e: raise Exception(e)
[docs] def get_nn_info(self, condition): """ search nn_info :return: """ try: # make query string (use raw query only when cate is too complicated) query_list = [] query_list.append("SELECT * ") query_list.append("FROM master_NN_DEF_LIST_INFO NL LEFT OUTER JOIN master_NN_VER_WFLIST_INFO WF ") query_list.append(" ON NL.nn_id = WF.nn_id_id AND WF.active_flag = 'Y' ") query_list.append(" LEFT OUTER JOIN master_NN_VER_BATCHLIST_INFO BT ") query_list.append(" ON wf.nn_id_id||'_'||wf.nn_wf_ver_id = substr(bt.nn_batch_ver_id,1,length(wf.nn_id_id||'_'||wf.nn_wf_ver_id)) ") if condition['nn_id'] == '%': query_list.append(" AND BT.eval_flag = 'Y' ") else: query_list.append(" AND BT.active_flag = 'Y' ") query_list.append("WHERE NL.nn_id like %s ") query_list.append(" AND NL.biz_cate like %s ") query_list.append(" AND NL.biz_sub_cate like %s ") query_list.append(" AND NL.use_flag = 'Y' ") # parm_list : set parm value as list parm_list = [] parm_list.append("%" + ('' if condition.get("nn_id") is None else condition.get("nn_id"))) parm_list.append("%" + ('' if condition.get("biz_cate") is None else condition.get("biz_cate"))) parm_list.append("%" + ('' if condition.get("biz_sub_cate") is None else condition.get("biz_sub_cate"))) with connection.cursor() as cursor: cursor.execute(''.join(query_list), parm_list) row = dictfetchall(cursor) return row except Exception as e: raise Exception(e)
[docs] def delete_nn_info(self, nn_id_list): """ deleted selected nn_info :param nn_id_list: list of nn_ids :return: """ try: if (isinstance(nn_id_list, (str))): models.NN_DEF_LIST_INFO.objects.filter(nn_id__contains=nn_id_list).delete() elif (isinstance(nn_id_list, (list))): for d_id in nn_id_list: models.NN_DEF_LIST_INFO.objects.filter(nn_id__contains=d_id).delete() else: return 'delete request data type is wrong' return nn_id_list except Exception as e: return e
[docs] def update_nn_info(self, input_data): """ update nn_info :param nn_id: :param obj : json object :return: """ try: obj = models.NN_DEF_LIST_INFO.objects.get(nn_id=str(input_data['nn_id'])) for key in input_data.keys(): if (input_data[key] != None): setattr(obj, key, input_data[key]) obj.save() return str(input_data['nn_id']) except Exception as e: raise Exception(e)
[docs] def insert_nn_info(self, req, reqs): """ insert nn_info :param req: json object :return: """ try: serializer1 = serializers.NN_DEF_LIST_INFO_Serializer(data=req) if serializer1.is_valid(): serializer1.save() except Exception as e: raise Exception(e) try: serializer2 = serializers.NN_DEF_LIST_ID_INFO_Serializer(data=reqs) if serializer2.is_valid(): serializer2.save() except Exception as e: raise Exception(e) finally: return req["nn_id"]
[docs] def insert_nn_wf_info(self, req): """ insert nn_info version data :param req: :return: """ try: serializer = serializers.NN_VER_WFLIST_INFO_Serializer(data=req) if serializer.is_valid(): serializer.save() except Exception as e: raise Exception(e) finally: return req["nn_wf_ver_id"]
[docs] def update_nn_wf_info(self, nn_id, up_data): """ update nn_info :param nn_id: :param obj : json object :return: """ try: # set all other version info active tag to false if(up_data['active_flag'] == 'Y'): query_list = models.NN_VER_WFLIST_INFO.objects.filter(nn_id=nn_id) for query_item in query_list: query_item.active_flag = 'N' query_item.save() # update user request obj = models.NN_VER_WFLIST_INFO.objects.get(nn_id=nn_id, nn_wf_ver_id=str(up_data['nn_wf_ver_id'])) for key in up_data.keys(): if (up_data[key] != None): setattr(obj, key, up_data[key]) obj.save() return str(up_data['nn_wf_ver_id']) except Exception as e: raise Exception(e)
[docs] def get_nn_wf_info(self, nn_id): """ search nn_wf_info :return: """ try: # make query string (use raw query only when cate is too complicated) query_list = [] query_list.append(" select nn_wf.nn_id_id nn_id ") query_list.append(" ,nn_wf.nn_wf_ver_id ") query_list.append(" ,nn_wf.wf_active_flag active_flag ") query_list.append(" ,nn_wf.nn_batch_ver_id train_batch_ver_id ") query_list.append(" ,nn_wf.train_acc_info ") query_list.append(" ,nn_wf.train_loss_info ") query_list.append(" ,nn_wf.nn_wf_ver_desc ") query_list.append(" ,btp.nn_batch_ver_id pred_batch_ver_id ") query_list.append(" ,smp.acc_info pred_acc_info ") query_list.append(" ,smp.loss_info pred_loss_info ") query_list.append(" ,smrt.result_info t_result_info ") query_list.append(" ,smrp.result_info p_result_info ") query_list.append(" from( ") query_list.append(" SELECT wf.nn_id_id ") query_list.append(" ,wf.nn_wf_ver_id ") query_list.append(" ,wf.nn_id_id||'_'||wf.nn_wf_ver_id as status_id ") query_list.append(" ,wf.active_flag wf_active_flag ") query_list.append(" ,wf.nn_wf_ver_desc ") query_list.append(" ,btt.nn_batch_ver_id ") query_list.append(" ,btt.active_flag bt_active_flag ") query_list.append(" ,smt.acc_info train_acc_info ") query_list.append(" ,smt.loss_info train_loss_info ") query_list.append(" FROM master_NN_DEF_LIST_INFO nl ") query_list.append(" LEFT OUTER JOIN master_NN_VER_WFLIST_INFO wf ON nl.nn_id = wf.nn_id_id ") query_list.append(" LEFT OUTER JOIN master_NN_VER_BATCHLIST_INFO btt ") query_list.append(" ON wf.nn_id_id||'_'||wf.nn_wf_ver_id = substr(btt.nn_batch_ver_id,1,length(wf.nn_id_id||'_'||wf.nn_wf_ver_id)) ") query_list.append(" and btt.eval_flag = 'Y' ") query_list.append(" LEFT OUTER JOIN master_train_summary_accloss_info smt ") query_list.append(" ON btt.nn_batch_ver_id = smt.nn_batch_ver_id_id ) nn_wf ") query_list.append(" LEFT OUTER JOIN master_NN_VER_BATCHLIST_INFO btp ") query_list.append(" ON nn_wf.status_id = substr(btp.nn_batch_ver_id,1,length(nn_wf.status_id)) ") query_list.append(" and btp.active_flag = 'Y' ") query_list.append(" LEFT OUTER JOIN master_train_summary_accloss_info smp ") query_list.append(" ON btp.nn_batch_ver_id = smp.nn_batch_ver_id_id ") query_list.append(" LEFT OUTER JOIN master_train_summary_result_info smrt ") query_list.append(" ON nn_wf.nn_batch_ver_id = smrt.nn_batch_ver_id_id ") query_list.append(" LEFT OUTER JOIN master_train_summary_result_info smrp ") query_list.append(" ON btp.nn_batch_ver_id = smrp.nn_batch_ver_id_id ") query_list.append("WHERE nn_id_id like %s ") query_list.append(" order by nn_wf.nn_id_id, nn_wf.nn_wf_ver_id ") # parm_list : set parm value as list parm_list = [] parm_list.append(nn_id) with connection.cursor() as cursor: cursor.execute(''.join(query_list), parm_list) row = dictfetchall(cursor) return row except Exception as e: raise Exception(e)
[docs] def get_nn_max_ver(self, nn_id): try: query_set = models.NN_VER_WFLIST_INFO.objects.filter(nn_id=nn_id).aggregate(Max('nn_wf_ver_id')) return_value = query_set['nn_wf_ver_id__max'] if query_set['nn_wf_ver_id__max'] == None: return_value = 0 return return_value except Exception as e: raise Exception(e)
[docs] def get_nn_batch_info(self, nn_id, ver): """ search nn_batch_info :return: """ try: # make query string (use raw query only when cate is too complicated) query_list = [] query_list.append(" select wf.nn_id_id ") query_list.append(" ,wf.nn_wf_ver_id ") query_list.append(" ,bt.nn_batch_ver_id ") query_list.append(" ,bt.active_flag ") query_list.append(" ,bt.eval_flag ") query_list.append(" ,sm.acc_info ") query_list.append(" ,sm.loss_info ") query_list.append(" ,smr.result_info ") query_list.append(" from master_NN_VER_WFLIST_INFO wf ") query_list.append(" ,master_NN_VER_BATCHLIST_INFO bt ") query_list.append(" LEFT OUTER JOIN master_train_summary_accloss_info sm ") query_list.append(" ON bt.nn_batch_ver_id = sm.nn_batch_ver_id_id ") query_list.append(" LEFT OUTER JOIN master_train_summary_result_info smr ") query_list.append(" ON bt.nn_batch_ver_id = smr.nn_batch_ver_id_id ") query_list.append(" where wf.nn_id_id||'_'||wf.nn_wf_ver_id = substr(bt.nn_batch_ver_id,1,length(wf.nn_id_id||'_'||wf.nn_wf_ver_id)) ") query_list.append(" and wf.nn_id_id = %s ") query_list.append(" and wf.nn_wf_ver_id = %s ") # parm_list : set parm value as list parm_list = [] parm_list.append(nn_id) parm_list.append(ver) with connection.cursor() as cursor: cursor.execute(''.join(query_list), parm_list) row = dictfetchall(cursor) return row except Exception as e: raise Exception(e)
[docs] def update_nn_batch_info(self, nn_id, ver, up_data): """ update nn_info :param nn_id: :param obj : json object :return: """ try: # update user request obj = models.NN_VER_BATCHLIST_INFO.objects.get(nn_batch_ver_id=str(up_data['nn_batch_ver_id'])) for key in up_data.keys(): if (up_data[key] != None): setattr(obj, key, up_data[key]) obj.save() return str(up_data['nn_batch_ver_id']) except Exception as e: raise Exception(e)
[docs] def get_nn_node_info(self, nn_id, ver, desc): """ update nn_info :param nn_id: :param obj : json object :return: """ try: state_id = nn_id+"_"+ver if(desc != None and desc == "all"): query_set = models.NN_WF_NODE_INFO.objects.filter(wf_state_id=state_id) else: query_set = models.NN_WF_NODE_INFO.objects.filter(wf_state_id=state_id, nn_wf_node_desc=desc ) query_set = serial.serialize("json", query_set) return json.loads(query_set) except Exception as e: raise Exception(e)