Source code for master.workflow.common.workflow_common
from common.utils import *
from master import models
[docs]class WorkFlowCommon:
"""
parent class for all workflow classes
"""
[docs] def get_view_obj(self, node_id):
"""
get view data for net config
:return:
"""
# node_id = input_data["key"]["node_id"]
try:
obj = models.NN_WF_NODE_INFO.objects.get(nn_wf_node_id=node_id)
data_set = getattr(obj, "node_config_data")
return data_set
except Exception as e:
raise Exception(e)
[docs] def set_view_obj(self, node_id, input_data):
"""
set net config data edited on view
:param obj:
:return:
"""
try:
#TODO : remove after lunching runtime
#self.validation_check(input_data)
#self.restriction_check(node_id, input_data)
obj = models.NN_WF_NODE_INFO.objects.get(nn_wf_node_id=node_id)
setattr(obj, "node_config_data", input_data)
obj.save()
return input_data
except Exception as e:
raise Exception(e)
return None
[docs] def update_view_obj(self, node_id, input_data):
"""
set net config data edited on view
:param obj:
:return:
"""
try:
obj = models.NN_WF_NODE_INFO.objects.get(nn_wf_node_id=node_id)
data_set = getattr(obj, "node_config_data")
data_set.update(input_data)
setattr(obj, "node_config_data", data_set)
obj.save()
return input_data
except Exception as e:
raise Exception(e)
return None
[docs] def get_state_id(self, node_id):
try:
obj = models.NN_WF_NODE_INFO.objects.get(nn_wf_node_id=node_id)
return obj.wf_state_id
except Exception as e:
raise Exception(e)
[docs] def validation_check(self, json_data):
"""
check if necessray parms are all set
:param json_data:
:return:
"""
if('type' in json_data):
filter_list = self._get_key_parms(type=json_data.get('type'))
else :
filter_list = self._get_key_parms()
if(filter_list is not None):
match_list = list(set(json_data.keys()).intersection(filter_list))
req_list = list(set(filter_list) - set(match_list))
error_msg = ""
for key in req_list :
error_msg = ''.join([error_msg, key , 'not defined\n'])
if(len(error_msg) > 0) :
raise Exception (error_msg)
else:
raise Exception('JSON Validation ERROR')
def _get_key_parms(self, type='default'):
"""
return update black list
:return:
"""
if(type in self.essence_parms) :
return self.essence_parms.get(type)
else :
return None
def _set_key_parms(self, lists, type='default'):
"""
set update black list
:param lists:
:return:
"""
self.essence_parms = {}
self.essence_parms[type] = lists
[docs] def restriction_check(self, node_id, json_data):
"""
restirct user to modify cirical values may can occur problems on flow
:param json_data:
:return:
"""
db_parm = self.get_view_obj(node_id)
exists_list = list(set(json_data).intersection(db_parm))
black_list = self._get_prhb_parms()
if(len(list(set(black_list).intersection(exists_list))) > 0) :
raise Exception("you cannot change critical values, create new version for diffrent model")
def _get_prhb_parms(self):
"""
return update black list
:return:
"""
if(self.update_black_list) :
return self.update_black_list
else :
return []
def _set_prhb_parms(self, lists):
"""
set update black list
:param lists:
:return:
"""
self.update_black_list = lists