replaced Element.get_elements() with XmlNode.get_instance(). replaced Element.add_ele...
[sfa.git] / sfa / rspecs / elements / element.py
index 2b27d9e..a2febfc 100644 (file)
@@ -2,22 +2,18 @@ class Element(dict):
 
     fields = {}
 
-    def __init__(self, fields={}, element=None):
+    def __init__(self, fields={}, element=None, keys=None):
         self.element = element
-        dict.__init__(self, self.fields) 
-        self.update(fields)
+        dict.__init__(self, dict.fromkeys(self.fields))
+        if not keys:
+            keys = fields.keys()
+        for key in keys:
+            if key in fields:
+                self[key] = fields[key] 
 
-    @staticmethod
-    def get(element_class, xml, xpath, namespaces=None):
-        elems = xml.xpath(xpath, namespaces)
-        generic_elems = [element_class(elem.attrib, elem) for elem in elems]
-        return generic_elems
-
-
-    @staticmethod
-    def add(xml, element_class, name, obj):
-        elem = xml.add_element(name)
-        for field in element_class.fields:
-            if field in obj and obj[field]:
-                elem.set(field, obj[field])
-        return elem
+    def __getattr__(self, attr):
+        if hasattr(self, attr):
+            return getattr(self, attr)
+        elif self.element is not None and hasattr(self.element, attr):
+            return getattr(self.element, attr)
+        raise AttributeError, "Element class has no attribute %s" % attr