Beispiel #1
0
	def evaluate_filter(self, filter_dict ):
		debug_log('\n---------------')
		debug_log('evaluating filter\n')
		debug_log(filter_dict)
		debug_log('\n')
		my_session = self
		#debug_log(my_session.get_dictionary())
		last_req = my_session.requests.last_item 
		last_resp = my_session.responses.last_item
		debug_log('last request: ', last_req)
		debug_log('last response:', last_resp)
		keyword_evaluation = False
		Speaker_ID_evaluation = False
		Skill_ID_evaluation = False
		time_evaluation = False
		include_or_evaluation = False
		exclude_and_evaluation = True
		all_empty = True
		if 'keywords' in filter_dict:
			keywords = filter_dict.get('keywords')
			debug_log( 'these are keywords:')
			debug_log(keywords)
			if 'include_or' in keywords:
				all_empty = False
				include_or_evaluation = False
				debug_log('there is include or')
				include_or_items = keywords.get('include_or')
				for item in include_or_items:
					debug_log(item)
					if ( last_req != None ):
					#	if (item in last_req):
						if (len(self.evaluate_NLP(last_req,item))>0):
							include_or_evaluation = True
							break
					if ( last_resp != None):
					#	if (item in last_resp):
						if (len(self.evaluate_NLP(last_resp,item))>0):
							include_or_evaluation = True
							break
					#if ((item in last_req) or (item in last_resp)):
					#	include_or_evaluation= True 
					#	break
			else:
				include_or_evaluation = True
					
			if 'exclude_and' in keywords:
				all_empty = False
				exclude_and_evaluation = True
				debug_log('there is exclude and')
				exclude_and_items = keywords.get('exclude_and')
				for item in exclude_and_items:
					debug_log(item)
					if ( last_req != None ):
						if (item in last_req):
							exclude_and_evaluation = False
							break
					if ( last_resp != None):
						if (item in last_resp):
							exclude_and_evaluation = False
							break
					#if ( (item in last_resp) or (item in last_req)):
					#	exclude_and_evaluation = False
					#	break
			else:
				exclude_and_evaluation = True

			keyword_evaluation = include_or_evaluation and exclude_and_evaluation	
			if (keyword_evaluation == False):
				return False

		if 'Speaker_ID' in filter_dict:
			Speaker_IDs = filter_dict.get('Speaker_ID')
			debug_log( 'these are Speaker_IDs:')
			debug_log(Speaker_IDs)
			if 'include_or' in Speaker_IDs:
				all_empty = False
				include_or_evaluation = False
				debug_log('there is include or')
				include_or_items = Speaker_IDs.get('include_or')
				for item in include_or_items:
					debug_log(item)
					if (my_session.speaker_id == item):
						include_or_evaluation= True 
						break
			else:
				include_or_evaluation = True
					
			if 'exclude_and' in Speaker_IDs:
				all_empty = False
				exclude_and_evaluation = True
				debug_log('there is exclude and')
				exclude_and_items = Speaker_IDs.get('exclude_and')
				for item in exclude_and_items:
					debug_log(item)
					if ( my_session.speaker_id == item):
						exclude_and_evaluation = False
						break
			else:
				exclude_and_evaluation = True

			Speaker_ID_evaluation = include_or_evaluation and exclude_and_evaluation	
			if (Speaker_ID_evaluation == False):
				return False

		if 'Skill_ID' in filter_dict:
			Skill_IDs = filter_dict.get('Skill_ID')
			debug_log( 'these are Skill_IDs:')
			debug_log(Skill_IDs)
			if 'include_or' in Skill_IDs:
				all_empty = False
				include_or_evaluation = False
				debug_log('there is include or')
				include_or_items = Skill_IDs.get('include_or')
				for item in include_or_items:
					debug_log(item)
					debug_log(my_session.skill_id)
					if (my_session.skill_id == item):
						include_or_evaluation= True 
						debug_log("[1]")
						break
			else:
				include_or_evaluation = True
					
			if 'exclude_and' in Skill_IDs:
				all_empty = False
				exclude_and_evaluation = True
				debug_log('there is exclude and')
				exclude_and_items = Skill_IDs.get('exclude_and')
				for item in exclude_and_items:
					debug_log(item)
					if ( my_session.skill_id == item):
						exclude_and_evaluation = False
						break
			else:
				exclude_and_evaluation = True
			Skill_ID_evaluation = include_or_evaluation and exclude_and_evaluation	
			if (Skill_ID_evaluation == False):
				return False

		if 'time' in filter_dict:
			times = filter_dict.get('time')
			debug_log( 'these are times:')
			debug_log(times)
			if 'include_or' in times:
				all_empty = False
				include_or_evaluation = False
				debug_log('there is include or')
				include_or_items = times.get('include_or')
				for item_dict in include_or_items:
					debug_log(item_dict)
					start_time = Time()
					start_time.load(item_dict.get('start'))
					end_time = Time()
					end_time.load(item_dict.get('end'))
					if ( (my_session.time > start_time) and (my_session.time < end_time)):
						include_or_evaluation = True
						break
			else:
				include_or_evaluation = True

					
			if 'exclude_and' in times:
				all_empty = False
				exclude_and_evaluation = True
				debug_log('there is exclude and')
				exclude_and_items = times.get('exclude_and')
				for item_dict in exclude_and_items:
					debug_log(item_dict)
					start_time = Time()
					start_time.load(item_dict.get('start'))
					end_time = Time()
					end_time.load(item_dict.get('end'))
					if ( (my_session.time > start_time) and (my_session.time < end_time)):
						include_or_evaluation = False
						break
			else:
				exclude_and_evaluation = True
			time_evaluation = include_or_evaluation and exclude_and_evaluation	
			if (time_evaluation == False):
				return False
		if(all_empty == False):
			print("it evaluates to True")
			return True
		else:
			return False