X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Frspecs%2Frspec.py;h=a17b7d673e7f4fdb0bb4f220da63c81b04bdeda1;hb=a0ecdcce6c47700324b8cdb94951ab11392b4642;hp=b957e510712b79673611e51ef4605e19e4f42071;hpb=9eecf0c2200bfe12f3d72bece3a50894dfc2448b;p=sfa.git diff --git a/sfa/rspecs/rspec.py b/sfa/rspecs/rspec.py index b957e510..a17b7d67 100755 --- a/sfa/rspecs/rspec.py +++ b/sfa/rspecs/rspec.py @@ -18,18 +18,23 @@ class RSpec: self.user_options = user_options self.elements = {} if rspec: - self.parse_xml(rspec) + if version: + self.version = self.version_manager.get_version(version) + self.parse_xml(rspec, version) + else: + self.parse_xml(rspec) elif version: self.create(version) else: raise InvalidRSpec("No RSpec or version specified. Must specify a valid rspec string or a valid version") + def create(self, version=None): """ Create root element """ self.version = self.version_manager.get_version(version) self.namespaces = self.version.namespaces - self.parse_xml(self.version.template) + self.parse_xml(self.version.template, self.version) # eg. 2011-03-23T19:53:28Z date_format = '%Y-%m-%dT%H:%M:%SZ' now = datetime.utcnow() @@ -38,17 +43,16 @@ class RSpec: self.xml.set('expires', expires_ts) self.xml.set('generated', generated_ts) - - def parse_xml(self, xml): + def parse_xml(self, xml, version=None): self.xml.parse_xml(xml) - self.version = None - if self.xml.schema: - self.version = self.version_manager.get_version_by_schema(self.xml.schema) - else: - #raise InvalidRSpec('unknown rspec schema: %s' % schema) - # TODO: Should start raising an exception once SFA defines a schema. - # for now we just default to sfa - self.version = self.version_manager.get_version({'type':'sfa','version': '1'}) + if not version: + if self.xml.schema: + self.version = self.version_manager.get_version_by_schema(self.xml.schema) + else: + #raise InvalidRSpec('unknown rspec schema: %s' % schema) + # TODO: Should start raising an exception once SFA defines a schema. + # for now we just default to sfa + self.version = self.version_manager.get_version({'type':'sfa','version': '1'}) self.version.xml = self.xml self.namespaces = self.xml.namespaces @@ -91,12 +95,12 @@ class RSpec: def filter(self, filter): if 'component_manager_id' in filter: - nodes = self.version.get_node_elements() + nodes = self.version.get_nodes() for node in nodes: if 'component_manager_id' not in node.attrib or \ node.attrib['component_manager_id'] != filter['component_manager_id']: parent = node.getparent() - parent.remove(node) + parent.remove(node.element) def toxml(self, header=True):