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