Example #1
0
	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
Example #2
0
	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)