def get_smus_exclude_supersedes_include_prerequisites(smu_loader, smu_info_list): """ Returns a list of SMUInfo which has already excluded all the supersedes and included missing pre-requisites. """ smu_info = [] resultant_smu_dict = {} for smu_info in smu_info_list: if smu_info.status != 'Posted': continue # Filter out all the superseded SMUs superseded_by = comma_delimited_str_to_list(smu_info.superseded_by) if len(superseded_by) == 0: resultant_smu_dict[smu_info.name] = smu_info # Includes all the missing required pre-requisites missing_required_prerequisite_set = \ get_missing_required_prerequisite_set(smu_loader, resultant_smu_dict.values()) for missing_required_prerequisite in missing_required_prerequisite_set: if missing_required_prerequisite not in resultant_smu_dict: smu_info = smu_loader.get_smu_info(smu_info) if smu_info is not None: resultant_smu_dict[smu_info.name] = smu_info return resultant_smu_dict.values()
def get_smus_exclude_supersedes_include_prerequisites(smu_loader, smu_info_list): """ Returns a list of SMUInfo which has already excluded all the supersedes and included missing pre-requisites. """ smu_info = [] resultant_smu_dict = {} for smu_info in smu_info_list: if smu_info.status != "Posted": continue # Filter out all the superseded SMUs superseded_by = comma_delimited_str_to_list(smu_info.superseded_by) if len(superseded_by) == 0: resultant_smu_dict[smu_info.name] = smu_info # Includes all the missing required pre-requisites missing_required_prerequisite_set = get_missing_required_prerequisite_set(smu_loader, resultant_smu_dict.values()) for missing_required_prerequisite in missing_required_prerequisite_set: if missing_required_prerequisite not in resultant_smu_dict: smu_info = smu_loader.get_smu_info(smu_info) if smu_info is not None: resultant_smu_dict[smu_info.name] = smu_info return resultant_smu_dict.values()
def get_smu_ids(db_session, smu_name_list): smu_ids = [] smu_names = comma_delimited_str_to_list(smu_name_list) for smu_name in smu_names: smu_info = db_session.query(SMUInfo).filter(SMUInfo.name == smu_name).first() if smu_info is not None: smu_ids.append(smu_info.id) else: smu_ids.append(UNKNOWN) return ','.join([id for id in smu_ids])
def get_smu_ids(db_session, smu_name_list): smu_ids = [] smu_names = comma_delimited_str_to_list(smu_name_list) for smu_name in smu_names: smu_info = db_session.query(SMUInfo).filter( SMUInfo.name == smu_name).first() if smu_info is not None: smu_ids.append(smu_info.id) else: smu_ids.append(UNKNOWN) return ','.join([id for id in smu_ids])
def is_superseded(smu_loader, smu_name_list, smu_name): """ Given a smu_name_set, check to see if the smu_name is tagged as a superseded SMU. Each SMU name in the smu_name_set represents a SMUInfo which may contain the smu_name as its supersedes. """ for name in smu_name_list: smu_info = smu_loader.get_smu_info(name) if smu_info is not None: superseded_smus = comma_delimited_str_to_list(smu_info.supersedes) for superseded_smu in superseded_smus: if superseded_smu == smu_name: return True return False
def get_all_superseded_bys(smu_loader, superseded_by_set, smu_name): """ Given a SMU name, returns all the SMUs that supersede this SMU. SMU name can be SMU/SP name. """ smu_info = smu_loader.get_smu_info(smu_name) if smu_info is not None: superseded_bys = comma_delimited_str_to_list(smu_info.superseded_by) if len(superseded_bys) > 0: for superseded_by in superseded_bys: if superseded_by not in superseded_by_set: superseded_by_set.add(superseded_by) get_all_superseded_bys(smu_loader, superseded_by_set, superseded_by)
def get_all_prerequisites(smu_loader, prerequisite_set, smu_name): """ Given a SMU name, returns all its pre-requisites including its pre-requisites' pre-requisites. SMU name can be SMU/SP name. """ smu_info = smu_loader.get_smu_info(smu_name) if smu_info is not None: prerequisites = comma_delimited_str_to_list(smu_info.prerequisites) if len(prerequisites) > 0: for prerequisite in prerequisites: if prerequisite not in prerequisite_set: prerequisite_set.add(prerequisite) get_all_prerequisites(smu_loader, prerequisite_set, prerequisite)
def is_superseded(smu_loader, smu_name_list, smu_name): """ Given a smu_name_set, check to see if the smu_name is tagged as a superseded SMU. Each SMU name in the smu_name_set represents a SMUInfo which may contain the smu_name as its supersedes. """ for name in smu_name_list: smu_info = smu_loader.get_smu_info(name) if smu_info is not None: superseded_smus = comma_delimited_str_to_list(smu_info.supersedes) for superseded_smu in superseded_smus: if superseded_smu == smu_name: return True return False
def get_all_superseded_bys(smu_loader, superseded_by_set, smu_name): """ Given a SMU name, returns all the SMUs that supersede this SMU. SMU name can be SMU/SP name. """ smu_info = smu_loader.get_smu_info(smu_name) if smu_info is not None: superseded_bys = comma_delimited_str_to_list(smu_info.superseded_by) if len(superseded_bys) > 0: for superseded_by in superseded_bys: if superseded_by not in superseded_by_set: superseded_by_set.add(superseded_by) get_all_superseded_bys(smu_loader, superseded_by_set, superseded_by)
def get_all_prerequisites(smu_loader, prerequisite_set, smu_name): """ Given a SMU name, returns all its pre-requisites including its pre-requisites' pre-requisites. SMU name can be SMU/SP name. """ smu_info = smu_loader.get_smu_info(smu_name) if smu_info is not None: prerequisites = comma_delimited_str_to_list(smu_info.prerequisites) if len(prerequisites) > 0: for prerequisite in prerequisites: if prerequisite not in prerequisite_set: prerequisite_set.add(prerequisite) get_all_prerequisites(smu_loader, prerequisite_set, prerequisite)
def get_excluded_supersede_list(smu_info_list): """ Given a smu_info_list, exclude SMUs that are superseded by other SMUs in the list. """ smu_info_dict = get_dict_from_list(smu_info_list) resultant_list = [] for smu_info in smu_info_list: superseded_by_smus = comma_delimited_str_to_list(smu_info.superseded_by) is_superseded = False for superseded_by_smu in superseded_by_smus: if superseded_by_smu in smu_info_dict: is_superseded = True break if not is_superseded: resultant_list.append(smu_info) return resultant_list
def get_excluded_supersede_list(smu_info_list): """ Given a smu_info_list, exclude SMUs that are superseded by other SMUs in the list. """ smu_info_dict = get_dict_from_list(smu_info_list) resultant_list = [] for smu_info in smu_info_list: superseded_by_smus = comma_delimited_str_to_list( smu_info.superseded_by) is_superseded = False for superseded_by_smu in superseded_by_smus: if superseded_by_smu in smu_info_dict: is_superseded = True break if not is_superseded: resultant_list.append(smu_info) return resultant_list