Esempio n. 1
0
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
Esempio n. 3
0
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')]
Esempio n. 4
0
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
Esempio n. 5
0
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))
Esempio n. 6
0
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))
Esempio n. 7
0
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))