Note: This was originally posted by an inactive account. Content was preserved by moving under an admin account.
Originally posted by: zonHi guys,
I need your help, to understand how can I use my Phython node to find match using more than one field.
This is my current code. At this moment, I'm using only one field to match: PREFIX vs. net_b_number_normalized.
######################################
import braininfo
def setup(brainNodeControlObj, BrainNodeClass):
''' Must return a class that inherits from BrainNodeClass. '''
class BrainNode(BrainNodeClass):
def initialize(self):
''' Called at node initialization, before first pump.'''
super(BrainNode, self).initialize()
self.lookupList = list()
self.destHash = list()
inRec = self.inputs[1].read()
while inRec:
self.lookupList.append(inRec)
self.destHash.append(inRec["PREFIX"])
inRec = self.inputs[1].read()
metadata = self.inputs[0].metadata
metadata.append("UOOM_EVT", "String")
metadata.append("REPEAT_EVT","String")
metadata.append("PRECOCHAMADA_EVT", "String")
metadata.append("UOOM1_MIN_SEC", "String")
metadata.append("REPEAT1_MIN_SEC", "String")
metadata.append("PRECOCHAMADA1_MIN_SEC", "String")
metadata.append("CHARGE_TYPE1_MIN_SEC", "String")
metadata.append("UOOM1_SEC", "String")
metadata.append("REPEAT1_SEC", "String")
metadata.append("PRECOCHAMADA1_SEC", "String")
metadata.append("CHARGE_TYPE1_SEC", "String")
metadata.append("UOOM2_MIN_SEC", "String")
metadata.append("REPEAT2_MIN_SEC", "String")
metadata.append("PRECOCHAMADA2_MIN_SEC", "String")
metadata.append("UOOM2_SEC", "String")
metadata.append("REPEAT2_SEC", "String")
metadata.append("PRECOCHAMADA2_SEC", "String")
metadata.append("UOOM3_MIN_SEC", "String")
metadata.append("REPEAT3_MIN_SEC", "String")
metadata.append("PRECOCHAMADA3_MIN_SEC", "String")
metadata.append("UOOM3_SEC", "String")
metadata.append("REPEAT3_SEC", "String")
metadata.append("PRECOCHAMADA3_SEC", "String")
metadata.append("OUTCTP", "String")
metadata.append("OPERADORA", "String")
metadata.append("DIRECCAOCHAMADA", "String")
metadata.append("PREFIX", "String")
metadata.append("TIER_ID", "String")
metadata.append("POI_ID", "String")
metadata.append("TRUNK_ID", "String")
self.outputs[0].metadata = metadata
def finalize(self, val):
''' Called at node end, after last pump call. '''
super(BrainNode, self).finalize(val)
def pump(self, quant):
''' Will continue to be called until False is returned.
Only a small amount of work should be done in pump without checking
quant.permitsRunning. When that returns False, return from pump
with a True value to be called again, a False value when finished.'''
while quant.permitsRunning(self):
# your code here
inRec = self.inputs[0].read()
if not inRec:
return False
dest = inRec['net_b_number_normalized']
found = False
i=0
while not found and i<len(self.destHash):
# rec = self.lookupList[i]
# prefix = rec["COSTCODE"]
prefix = self.destHash[i]
if dest.startswith(prefix):
found = True
rec = self.lookupList[i]
i = i+1
outRec = self.outputs[0].newRecord()
outRec._copyFrom(inRec)
if found:
outRec["UOOM_EVT"] = rec["UOOM_EVT"]
outRec["REPEAT_EVT"] = rec["REPEAT_EVT"]
outRec["PRECOCHAMADA_EVT"] = rec["PRECOCHAMADA_EVT"]
outRec["UOOM1_MIN_SEC"] = rec["UOOM1_MIN_SEC"]
outRec["REPEAT1_MIN_SEC"] = rec["REPEAT1_MIN_SEC"]
outRec["PRECOCHAMADA1_MIN_SEC"] = rec["PRECOCHAMADA1_MIN_SEC"]
outRec["CHARGE_TYPE1_MIN_SEC"] = rec["CHARGE_TYPE1_MIN_SEC"]
outRec["UOOM1_SEC"] = rec["UOOM1_SEC"]
outRec["REPEAT1_SEC"] = rec["REPEAT1_SEC"]
outRec["PRECOCHAMADA1_SEC"] = rec["PRECOCHAMADA1_SEC"]
outRec["CHARGE_TYPE1_SEC"] = rec["CHARGE_TYPE1_SEC"]
outRec["UOOM2_MIN_SEC"] = rec["UOOM2_MIN_SEC"]
outRec["REPEAT2_MIN_SEC"] = rec["REPEAT2_MIN_SEC"]
outRec["PRECOCHAMADA2_MIN_SEC"] = rec["PRECOCHAMADA2_MIN_SEC"]
outRec["UOOM2_SEC"] = rec["UOOM2_SEC"]
outRec["REPEAT2_SEC"] = rec["REPEAT2_SEC"]
outRec["PRECOCHAMADA2_SEC"] = rec["PRECOCHAMADA2_SEC"]
outRec["UOOM3_MIN_SEC"] = rec["UOOM3_MIN_SEC"]
outRec["REPEAT3_MIN_SEC"] = rec["REPEAT3_MIN_SEC"]
outRec["PRECOCHAMADA3_MIN_SEC"] = rec["PRECOCHAMADA3_MIN_SEC"]
outRec["UOOM3_SEC"] = rec["UOOM3_SEC"]
outRec["REPEAT3_SEC"] = rec["REPEAT3_SEC"]
outRec["PRECOCHAMADA3_SEC"] = rec["PRECOCHAMADA3_SEC"]
outRec["OUTCTP"] = rec["OUTCTP"]
outRec["OPERADORA"] = rec["OPERADORA"]
outRec["DIRECCAOCHAMADA"] = rec["DIRECCAOCHAMADA"]
outRec["PREFIX"] = rec["PREFIX"]
outRec["TIER_ID"] = rec["TIER_ID"]
outRec["POI_ID"] = rec["POI_ID"]
outRec["TRUNK_ID"] = rec["TRUNK_ID"]
self.outputs[0].write(outRec)
# finished your quantum, you want pump called again
return True
# If you implement your logic here, you don't need code below. If you want
# to inherit, and add more logic at next level, uncomment below code
# py3File = brainNodeControlObj.properties.getString("ls.brain .node.BrainPython.python3ImplementationFile")
# braininfo.loadModule(py3File, "py3", brainNodeControlObj)
# import py3
# BrainNodeImpl = py3.setup(brainNodeControlObj, BrainNode)
# return BrainNodeImpl
return BrainNode
##################################################
How can I introduce another field to this match, for instance: TRUNK_ID.
How can I do it? With this field, is a one-on-one match; not like the field that I'm using right now, the prefix, which is a match by the destination number that fits.
Many thanks for your help,
Regards
Natanael