def get_link_list_objects(self, parent, link_list_type, link_list): """ Return list of objects based on passed link list """ if link_list == None: return None else: list_objects = [] if link_list_type == 'documents': for link in link_list: doc = Document() doc.load_document(link) list_objects.append(doc) elif link_list_type == 'stakeholder': for link in link_list: sth = Stakeholder() sth.load_config_from_file(link) list_objects.append(sth) elif link_list_type == 'requirement': for link in link_list: if link.endswith('.req'): req = Requirement() req.load_config_from_file(link) list_objects.append(req) elif link.endswith('attributes.pkg'): pkg = RequirementPackage() pkg.load_config_from_file(link) list_objects.append(pkg) return list_objects
def load_package(self, package_directory, parent_package): """ Recursively read package directory and create and link objects """ file_listing = os.listdir(package_directory) file_listing.sort(key=LooseVersion) for name in file_listing: package_path = os.path.join(package_directory, name) if os.path.isdir(package_path): package_attributes = os.path.join(os.path.join(package_directory, name), 'attributes.pkg') package = RequirementPackage() package.load_config_from_file(package_attributes) parent_package._children.append(package) package._parent = parent_package self.load_package(package_path, package) package.assigned_to = self.get_link_list_objects(package, 'stakeholder', package.assigned_to) package.created_by = self.get_link_list_objects(package, 'stakeholder', package.created_by) package.documents = self.get_link_list_objects(package, 'documents', package.documents) package.rejected_by = self.get_link_list_objects(package, 'stakeholder', package.rejected_by) package.approved_by = self.get_link_list_objects(package, 'stakeholder', package.approved_by) package.postponed_by = self.get_link_list_objects(package, 'stakeholder', package.postponed_by) package.depends_on = self.get_link_list_objects(package, 'requirement', package.depends_on) elif os.path.isfile(package_path): if package_path.endswith('.req'): requirement = Requirement() requirement.load_config_from_file(os.path.join(package_directory, name)) requirement.assigned_to = self.get_link_list_objects(requirement, 'stakeholder', requirement.assigned_to) requirement.created_by = self.get_link_list_objects(requirement, 'stakeholder', requirement.created_by) requirement.documents = self.get_link_list_objects(requirement, 'documents', requirement.documents) requirement.rejected_by = self.get_link_list_objects(requirement, 'stakeholder', requirement.rejected_by) requirement.approved_by = self.get_link_list_objects(requirement, 'stakeholder', requirement.approved_by) requirement.postponed_by = self.get_link_list_objects(requirement, 'stakeholder', requirement.postponed_by) requirement.depends_on = self.get_link_list_objects(requirement, 'requirement', requirement.depends_on) parent_package._children.append(requirement) requirement._parent = parent_package else: # File extension is not .req (see if above) or file name not attribute.pkg, warn if not package_path.endswith('attributes.pkg'): Utility.report_error(1, 'Illegal repository file "%s" found' % package_path) else: Utility.report_error(1,'Unidentified file system object "%s", could be a symbolic link?' % name)