class Document(object): def __init__(self, filename): self.fd = gzip.open(filename) self.xml = ElementTree() self.xml.parse(self.fd) self.prjs = {} self.tasks = {} self.resources = {} self.vacations = [] self._process_projects() self._process_resources() self._process_tasks() self._process_vacations() # __init__() def _process_projects(self): for node in self.xml.findall("project"): prj = Project(self, node) self.prjs[prj.id] = prj # _process_projects() def _process_tasks(self): for tl in self.xml.findall("taskList"): for node in tl.findall("task"): prj = self.prjs[node.get("projectId")] task = Task(self, prj, node) prj.tasks.append(task) prj.register_task(task) # _process_tasks() def _process_resources(self): for rl in self.xml.findall("resourceList"): for node in rl.findall("resource"): Resource(self, node) # _process_resources() def _process_vacations(self): for vl in self.xml.findall("vacationList"): for node in vl.findall("vacation"): self.vacations.append(Vacation(node)) # _process_vacations() def __str__(self): lst = [] for p in self.prjs.itervalues(): lst.append(str(p)) return "%s(projects=[%s])" % (self.__class__.__name__, ", ".join(lst))
def GetElementsFromXML(self,filename): 'Extracts a dictionary of elements from the gcc_xml file.' tree = ElementTree() try: tree.parse(filename) except ExpatError: raise InvalidXMLError, 'Not a XML file: %s' % filename root = tree.getroot() if root.tag != 'GCC_XML': raise InvalidXMLError, 'Not a valid GCC_XML file' # build a dictionary of id -> element, None elementlist = root.getchildren() elements = {} for element in elementlist: id = element.get('id') if id: elements[id] = element, None return elements
def read_programmes(fp=None, tree=None): """ read_programmes(fp=None, tree=None) -> list Return a list of programme dictionaries from file object 'fp' or the ElementTree 'tree' """ if DEBUG >= 2: print "in read_programmes(fp=None, tree=None)" if fp: et = ElementTree() tree = et.parse(fp) return [elem_to_programme(elem) for elem in tree.findall('programme')]
def read_data(fp=None, tree=None): """ read_data(fp=None, tree=None) -> dict Get the source and other info from file object fp or the ElementTree 'tree' """ if DEBUG >= 2: print "in read_data(fp=None, tree=None)" if fp: et = ElementTree() tree = et.parse(fp) d = {} set_attrs(d, tree, ('date', 'source-info-url', 'source-info-name', 'source-data-url', 'generator-info-name', 'generator-info-url')) return d
def get_tdf_file(path): """ This method takes the name of the tdf file from the .project file """ prj_file_path = os.path.join(path, ".project") if os.path.exists(prj_file_path): etree = ElementTree.parse(prj_file_path) el_name = etree.find("name") if el_name != None: return el_name.text else: logging.getLogger('cone.thememl').error( "The element name is not in %s" % prj_file_path) else: logging.getLogger('cone.thememl').info( "No .project file found. Trying to find tdf file.") for root, dirs, files in os.walk(path): for f in files: if f.endswith('tdf'): return re.sub('\.tdf', '', os.path.join(root, f))
class Document(object): def __init__(self, filename): self.fd = gzip.open(filename) self.xml = ElementTree() self.xml.parse(self.fd) self.prjs = {} self.tasks = {} self.resources = {} self.vacations = [] self._process_projects() self._process_resources() self._process_tasks() self._process_bookings() self._process_vacations() # __init__() def _process_projects(self): for node in self.xml.findall("project"): prj = Project(self, node) self.prjs[prj.id] = prj # _process_projects() def _process_tasks(self): for tl in self.xml.findall("taskList"): for node in tl.findall("task"): prj = self.prjs[node.get("projectId")] task = Task(self, prj, node) prj.tasks.append(task) prj.register_task(task) # _process_tasks() def _process_resources(self): for rl in self.xml.findall("resourceList"): for node in rl.findall("resource"): Resource(self, node) # _process_resources() def _process_bookings(self): for bl in self.xml.findall("bookingList"): for rb in bl.findall("resourceBooking"): resource = self.resources[rb.get("resourceId")] scenario = resource.booking.setdefault(rb.get("scenarioId"), {}) for node in rb.findall("booking"): task = scenario.setdefault(node.get("taskId"), []) start = get_child_int(node, "start") end = get_child_int(node, "end") task.append(Booking(start, end)) # _process_bookings() def _process_vacations(self): for vl in self.xml.findall("vacationList"): for node in vl.findall("vacation"): self.vacations.append(Vacation(node)) #_process_vacations() def __str__(self): lst = [] for p in self.prjs.itervalues(): lst.append(str(p)) return "%s(projects=[%s])" % (self.__class__.__name__, ", ".join(lst))
class Document(object): def __init__(self, filename): self.fd = gzip.open(filename) self.xml = ElementTree() self.xml.parse(self.fd) self.prjs = {} self.tasks = {} self.resources = {} self.vacations = [] self._process_projects() self._process_resources() self._process_tasks() self._process_bookings() self._process_vacations() # __init__() def _process_projects(self): for node in self.xml.findall("project"): prj = Project(self, node) self.prjs[prj.id] = prj # _process_projects() def _process_tasks(self): for tl in self.xml.findall("taskList"): for node in tl.findall("task"): prj = self.prjs[node.get("projectId")] task = Task(self, prj, node) prj.tasks.append(task) prj.register_task(task) # _process_tasks() def _process_resources(self): for rl in self.xml.findall("resourceList"): for node in rl.findall("resource"): Resource(self, node) # _process_resources() def _process_bookings(self): for bl in self.xml.findall("bookingList"): for rb in bl.findall("resourceBooking"): resource = self.resources[rb.get("resourceId")] scenario = resource.booking.setdefault(rb.get("scenarioId"), {}) for node in rb.findall("booking"): task = scenario.setdefault(node.get("taskId"), []) start = get_child_int(node, "start") end = get_child_int(node, "end") task.append(Booking(start, end)) # _process_bookings() def _process_vacations(self): for vl in self.xml.findall("vacationList"): for node in vl.findall("vacation"): self.vacations.append(Vacation(node)) #_process_vacations() def __str__(self): lst = [] for p in self.prjs.itervalues(): lst.append(str(p)) return "%s(projects=[%s])" % (self.__class__.__name__, ", ".join(lst))