try: # Python 3 from collections.abc import MutableSequence except ImportError: # Python 2.7 from collections import MutableSequence class KeyRequestGroup(MutableSequence): """A container for manipulating lists of hosts""" def __init__(self, data=None): """Initialize the class""" super(KeyRequestGroup, self).__init__() if (data is not None): self._list = list(data) else: self._list = list() def __repr__(self): return "<{0} {1}>".format(self.__class__.__name__, self._list) def __len__(self): """List length""" return len(self._list) def __getitem__(self, ii): """Get a list item""" if isinstance(ii, slice): return self.__class__(self._list[ii]) else: return self._list[ii] def __delitem__(self, ii): """Delete an item""" del self._list[ii] def __setitem__(self, ii, val): # optional: self._acl_check(val) self._list[ii] = val def __str__(self): return str(self._list) def createExistsQuery(self, val): query="type(service_method)" val['services'] = list(map(lambda x: x.replace("~","") , val['services'])) val['methods'] = list(map(lambda x: x.replace("~","") , val['methods'])) #case Service Names exists if len(val["services"]) > 0: if val["services"][0].startswith("SERVICE-"): query+=",fromRelationship.isServiceMethodOfService(type(\"SERVICE\"),entityId(\""+'","'.join(val["services"])+"\"))" else: query+=",fromRelationship.isServiceMethodOfService(type(\"SERVICE\"),entityName.in(\""+'","'.join(val["services"])+"\"))" if val["methods"][0].startswith("SERVICE_METHOD-"): query+=",entityId(\""+'","'.join(val["methods"])+"\")" else: query+=",entityName.in(\""+'","'.join(val["methods"])+"\")" val["existsQuery"]= query def insert(self, ii, val): self.createExistsQuery(val) self._list.insert(ii, val) def append(self, val): if len(self._list) == 0: #self._list.insert(ii, val) self.insert(len(self._list), val) return for group in self._list: if len(set(group["services"]) - set(val["services"])) > 0 or len(set(group["methods"]) - set(val["methods"])) > 0: self.insert(len(self._list), val) class KR: # def getNotExistingKeyRequests(self): # return [k for k in self.keyRequests if k['exists']==False] # def hasNotExistingKeyRequests(self): # for k in self.keyRequests: # if k['exists']==False: # return True # return False # def getNoData1WKeyRequests(self): # return [k for k in self.keyRequests if k['hasData_1W']==False and k['exists']==True] # def hasNoData1WKeyRequests(self): # for k in self.keyRequests: # if k['hasData_1W']==False and k['exists'] == True: # return True # return False def getKeyRequestByHasData(self,label): return [k for k in self.keyRequests if k['hasData'][label]==False] def hasNoData(self,label): for k in self.keyRequests: if k['hasData'][label]==False: return True return False def checkKeyRequestsHasData(self): pass def __init__(self, metadata, matchedGroups: KeyRequestGroup = None): self.metadata=metadata if matchedGroups == None: self.matchedGroups = KeyRequestGroup() else: self.matchedGroups = keyRequests_groups self.keyRequests=[]