Exemple #1
0
    def toresource(self, obj, res, indent=True):
        root = ElementTree.Element("metadata")
        root.set('xmlns', self.NAMESPACES[0])
        if not obj.__class__ == Metadata:
            raise exceptions.IncorrectClassError(
                'The given object is not a instance of %s' % Metadata)
        for key in obj.data.keys():
            prop = ElementTree.SubElement(root, 'property')
            self.set_property(prop, key, obj.data[key])
        if indent:
            persistence.indent(root)

        # To make the output the same in linux and windows
        # (needed to make testing easier)
        class LinesepNormalizerResource(object):
            def __init__(self, resource):
                self.resource = resource

            def write(self, data):
                if os.linesep != '\r\n':
                    data = data.replace(os.linesep, '\r\n')
                self.resource.write(data)

        res = LinesepNormalizerResource(res)

        # some smarter way to implement adding of the encoding to the beginning of file
        res.write('<?xml version="1.0" encoding="%s"?>%s' %
                  (self.encoding, os.linesep))
        ElementTree.ElementTree(root).write(res)
 def dumps(self, obj):
     """
     @param obj: The Configuration object 
     """
     
     elem = ElementTree.Element("extensions")
     for extension in obj._objects():
         if isinstance(extension, api.RulemlEvalGlobals):
             writer = EvalGlobalsWriter()
             childelem = writer.dumps(extension)
             if childelem != None:
                 elem.append(childelem)
         else:
             if extension.ns != None and extension.ns != "":
                 childelem = ElementTree.Element("{%s}%s" % (extension.ns, extension.tag))
             else:
                 childelem = ElementTree.Element(extension.tag)
             if extension.value != None:
                 childelem.text = extension.value
             for attr in extension.attrs:
                 childelem.set(attr, extension.attrs[attr])
             
             childs = self._dump_childen(extension._objects())
             for ch in childs:
                 childelem.append(ch)
             
             elem.append(childelem)
     return elem
Exemple #3
0
    def write(self, file):
        """
        write(file) -> None

        Write XML to filename of file object in 'file'
        """
        if DEBUG >= 0: print "in write(self, file)"
        et = ElementTree(self.root)
        et.write(file)
def write_element_tempfile(element, tempfile):
    """
    Writes element to temp file
    """
    if element != None and ElementTree.iselement(element):

        try:
            tempfile.write(ElementTree.tostring(element))
        except Exception, e:
            raise exceptions.ConeException(
                'Cannot write Element to file (%s). Exception: %s' %
                (tempfile, e))
Exemple #5
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')]
    def post_process_flattening(self, element):
        """
        Pick just data element and build document out of it
        """

        data_element = element.find("data")
        if data_element == None:
            self.logger.warning('No data to generate!!')
            new_doc = "<?xml version=\"1.0\"?><configuration>" + "</configuration>"
        else:
            new_doc = "<?xml version=\"1.0\"?><configuration>" + ElementTree.tostring(
                data_element) + "</configuration>"
        return ElementTree.fromstring(new_doc)
Exemple #7
0
    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()
 def test_read_hcrml_flag(self):
     xml = '<flags Uninitialised="0" Modifiable="0" Persistent="0"/>'
     etree = ElementTree.fromstring(xml)
     flag = self.reader.read_hrcml_flags(etree)
     self.assertEquals(flag.Uninitialised, '0')
     self.assertEquals(flag.Modifiable, '0')
     self.assertEquals(flag.Persistent, '0')
 def _run_test_read_invalid_hcrml_setting(self, xml, expected_exception):
     try:
         etree = ElementTree.fromstring(xml)
         setting = self.reader.read_hcrml_setting(etree)
         self.fail("Expected exception not raised!")
     except expected_exception:
         pass
Exemple #10
0
    def test_parse_template_filter_2(self):
        class DummyConfiguration(object):
            def get_resource(self, ref):
                class DummyResource(object):
                    def read(self): return ''
                    def close(self): return None
                return DummyResource()
            def get_default_view(self): return None
        reader = templatemlplugin.TemplatemlImplReader('foo/implml/bar.implml', DummyConfiguration())
        reader.fromstring(TEMPML_DOC4)
        
        filters1 = reader.filters
        filter2 = templatemlplugin.Filter()
        filter2.set_code(None)
        filter2.set_name("test_filter")
        filter2.set_path("../../filter/filter.py")
        temp1 = reader.parse_template(ElementTree.fromstring(TEMPML4))
        temp2 = templatemlplugin.TempFile()
        temp2.set_template('')
        temp2.set_path('')

        self.assertEqual(filters1[0].name, filter2.name)
        self.assertEqual(filters1[0].code, filter2.code)
        self.assertEqual(filters1[0].path, filter2.path)
        self.assertEqual(filters1[0], filter2)
        self.assertEqual(temp1.template, temp2.template)
        self.assertEqual(temp1.extensions, temp2.extensions)
        self.assertEqual(temp1.filters, temp2.filters)
        self.assertEqual(temp1, temp2)
 def dumps(self, obj):
     """
     @param obj: The Option object 
     """
     elem = ElementTree.Element('icon', 
                                {'xlink:href' : obj.href})
     return elem
 def dumps(self, obj):
     """
     @param obj: The Configuration object 
     """
     elem = ElementTree.Element('feature', 
                                {'ref' : obj.get_ref()})
     if obj.get_name():
         elem.set('name', obj.get_name())
     if obj.get_type():
         elem.set('type', obj.get_type())
     if obj.get_id() != None:
         elem.set('id', obj.get_id())
     if obj.get_relevant() != None:
         elem.set('relevant', obj.get_relevant())
     if obj.get_constraint() != None:
         elem.set('constraint', obj.get_constraint())
     
     dump_extension_attributes(obj, elem)
     
     for child in obj._objects():
         """ Make sure that the object is mapped to an object in this model """
         mobj = child._get_mapper('confml').map_object(child)
         writer = get_writer_for_class(mobj.__class__.__name__)
         childelem = writer.dumps(child)
         if childelem != None:
             elem.append(childelem)
     return elem
 def dumps(self, obj):
     """
     @param obj: The Configuration object 
     """
     elem = ElementTree.Element('desc')
     elem.text = obj.text
     return elem
 def _run_test_read_invalid_hcrml_output(self, xml, expected_exception):
     try:
         self.reader.doc = ElementTree.fromstring(xml)
         self.reader.read_hcrml_output()
         self.fail("Expected exception not raised!")
     except expected_exception:
         pass
 def test_parse_subdir_with_definition(self):
     etree = ElementTree.fromstring(
         genconfgml_string.replace("target=\"output\"",
                                   "subdir=\"include\""))
     reader = genconfmlplugin.GenconfmlImplReader()
     subdir = reader.parse_subdir(etree)
     self.assertEquals(subdir, "include")
 def test_read_hcrml_setting(self):
     xml = '<setting ref="hcrexample.DebounceInterval" name="KElmGPIO_DebounceInterval" type="int32" id="0"/>'
     etree = ElementTree.fromstring(xml)
     setting = self.reader.read_hcrml_setting(etree)
     self.assertEquals(setting.ref, 'hcrexample.DebounceInterval')
     self.assertEquals(setting.name, 'KElmGPIO_DebounceInterval')
     self.assertEquals(setting.type, 'int32')
     self.assertEquals(setting.id, 0)
 def dumps(self, obj):
     """
     @param obj: The Configuration object 
     """
     elem = ElementTree.Element('setting', 
                                {'ref' : obj.get_ref()})
     self._set_setting_properties(elem, obj)
     return elem
Exemple #18
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
 def dumps(self, obj):
     """
     @param obj: The ConfmlLocalPath object 
     """
     elem = ElementTree.Element('targetPath')
     if obj.readOnly:
         elem.set('readOnly', unicode(obj.readOnly))
     return elem
def write_element(element, output, linesep=os.linesep):
    """
    """
    if element != None and ElementTree.iselement(element):
        enc = None

        try:
            out_file = open(output, 'w')
            out_string = ElementTree.tostring(element)
            out_string = out_string.replace('\r\n', linesep)
            out_string = out_string.replace('\n', linesep)
            out_file.write(out_string)
            out_file.close()
        except Exception, e:
            raise exceptions.ConeException(
                'Cannot write Element to file (%s). Exception: %s' %
                (output, e))
 def test_read_hcrml_output(self):
     xml = '<hcr xmlns="%s"><output file="some/test/file.h" type="header"/></hcr>' % NAMESPACE
     self.reader.doc = ElementTree.fromstring(xml)
     output = self.reader.read_hcrml_output()
     self.assertEquals(output.type, 'header')
     self.assertEquals(output.file, 'some/test/file.h')
     self.assertEquals(output.version, None)
     self.assertEquals(output.read_only, None)
     self.assertEquals(output.categories, [])
 def dumps(self, obj):
     """
     @param obj: The Configuration object 
     """
     ref = obj.fqr.replace('.','/')
     elem = ElementTree.Element('setting', 
                                {'ref' : ref})
     self._set_setting_properties(elem, obj)
     return elem
 def test_parse_rules(self):
     etree = ElementTree.fromstring(ruleml_string)
     reader = ruleml.RuleImplReader2(None, None)
     rules = reader.parse_rules("", etree)
     self.assertTrue(isinstance(rules[0], relations.ConfigureRelation))
     self.assertTrue(isinstance(rules[1], relations.ConfigureRelation))
     self.assertTrue(rules[0].has_ref('imaker.imagetarget'))
     self.assertFalse(rules[0].has_ref('imakerapi.imagename'))
     self.assertTrue(rules[0].has_ref('imakerapi.outputLocation'))
 def dumps(self, obj):
     """
     @param obj: The facet object 
     """
     
     classname = obj.__class__.__name__
     elem = ElementTree.Element(self.MAPPING[classname])
     if obj.value != None:
         elem.set('value', str(obj.value))
     return elem
Exemple #25
0
 def test_parse_template_from_xinclude(self):
     try:
         reader = templatemlplugin.TemplatemlImplReader()
         reader.fromstring(TEMPML_DOC2)
         
         temp1 = reader.parse_template(ElementTree.fromstring(TEMPML2))
         temp2 = templatemlplugin.TempFile()
         temp2.set_template("include AABBCC")
     except exceptions.ParseError, e:
         self.fail("Known bug: ticket #2007")
    def parse_stylesheet(self, etree):
        """
        Parses stylesheet from getree
        """

        stylesheet = ""
        stylesheet_elem = etree.find("{%s}stylesheet" % self.namespaces[0])
        if stylesheet_elem != None:
            stylesheet = ElementTree.tostring(stylesheet_elem)
        return stylesheet
Exemple #27
0
 def fromstring(self, xml_as_string):
     meta = Metadata()
     try:
         etree = ElementTree.fromstring(xml_as_string)
         for elem in etree.getiterator("{%s}property" % self.NAMESPACES[0]):
             (key, value) = self.get_property(elem)
             meta.data[key] = value
     except Exception, e:
         logging.getLogger('cone').warning(
             "Could not read metadata! Exception %s" % (e))
 def test_parse_outputs(self):
     etree = ElementTree.fromstring(contentml2_string)
     reader = contentmlparser.Content2Parser()
     outputs = reader.parse_outputs(etree)
     self.assertEquals(outputs[0].dir, 'content')
     self.assertEquals(len(outputs[0].inputs), 1)
     self.assertEquals(outputs[0].inputs[0].dir, 'test')
     self.assertEquals(outputs[0].inputs[0].include, {'pattern': ['prod']})
     self.assertEquals(outputs[1].inputs[0].dir, '${features.inputref}')
     self.assertEquals(outputs[1].dir, '${features.outputref}')
def write_element_enc(element, output, enc, linesep=os.linesep):
    """
    Writes element to file
    """
    if element != None and ElementTree.iselement(element):
        enc = None

        try:
            remove_namespace(element, 'http://www.s60.com/xml/genconfml/1')

            out_file = codecs.open(output, 'w', enc)
            output_string = ElementTree.tostring(element)
            output_string = output_string.replace('\r\n', linesep)
            output_string = output_string.replace('\n', linesep)
            out_file.write(output_string)
            out_file.close()
        except Exception, e:
            raise exceptions.ConeException(
                'Cannot write Element to file (%s). Exception: %s' %
                (output, e))
 def fromstring(self, xml_as_string):
     etree = ElementTree.fromstring(xml_as_string)
     # Loop through parsers and try to find a match
     (namespace, elemname) = get_elemname(etree.tag)
     pclass = self.PARSERS.get(namespace, None)
     self.parser = pclass()
     self.desc = self.parser.parse_desc(etree)
     self.outputs = self.parser.parse_outputs(etree)
     self.phase = self.parser.parse_phase(etree)
     self.tags = self.parser.parse_tags(etree)
     return
    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
Exemple #32
0
    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()
Exemple #33
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))
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))