class trueTable: def __init__(self, resultsList): self.resultsList = resultsList self.nanoBTS1 = None self.nanoBTS2 = None self.nanoBTS3 = None self.o2Card = None self.eplusCard = None self.vodaCard = None self.tmobileCard = None self.self.outGoingRZ = None self.asteriskServer = None self.incomingRZ = None self.openBSC = None def initTrueTable(self): lists = self.resultsList externalRZList = ['GSMExt.Tm','GSMExt.O2','GSMExt.Voda','GSMExt.Eplus','landline'] # should fetch this from DB or mix between external GSM and SIP side. #fetch list from DB nanoBts = list() gsmResultList = list() outGoingRZ = None incomingRZ = None i= 1 for x in lists: call=x[0] dest=x[1] #print call[0:5] if call[0:5]=='GSMRZ': for y in lists: caller = y[0] desti=y[1] if i <= call[5:]: i = call[5:] i = int(i)+1#also can get from length of the GSMRZ found in DB,maybe its more easy to use it for x in lists: # to find nanoBts, asterik server and open BSC status regarding result test for GSM RZ call=x[0] dest=x[1] result=x[2] stop = False j=1 if call[0:5]=='GSMRZ' or dest[0:5]=='GSMRZ': while stop != True: if j != int(i): key = 'GSMRZ'+str(j) if key == call or key == dest: if result == '200': self.asteriskServer = True #set status of asterik server as working if len(nanoBts) == 0: nanoBts.append(['nanoBts '+str(j),True]) else: found = False for y in nanoBts: #find the existing nanoBts result name = y[0] if name == 'nanoBts '+str(j): found = True if found != True: #if doesnt found the nanoBts, add the result to the list, otherwise just ignoring nanoBts.append(['nanoBts '+str(j),True]) found = False if key == call:# for z in externalRZList:# find the result for outgoing call from GSM RZ to external RZ network if dest == z: self.outGoingRZ = True #set status as working for outgoing RZ if key == dest and call == 'landline': for z in externalRZList: if dest == z: self.incomingRZ = True # find the result for imcoming call to GSM RZ from external RZ network else: if key == call:# and dest == 'landline': for z in externalRZList: if dest == z: self.outGoingRZ = False if key == dest:# and call == 'landline': for z in externalRZList: if call == z: self.incomingRZ = False nanoBts.append(['nanoBts '+str(j),False]) j = j+1 elif j == int(i): stop = True if call[0:5]=='GSMEx': # looking for calling from GSMexternal found = False if len(nanoBts) ==0: nanoBts.append([call,result]) found = False else: for y in nanoBts: #find the existing result for GSM external in the list name = y[0] if name == call: found = True if found != True: nanoBts.append([call,result]) if dest[0:5]=='GSMEx': # looking for destination call to GSMexternal found = False if len(nanoBts) ==0: nanoBts.append([dest,result]) found = False else: for y in nanoBts: name = y[0] if name == dest: found = True if found != True: nanoBts.append([dest,result])