Author: jmorliaguet
Date: Fri Apr 14 11:02:22 2006
New Revision: 2836

Modified:
   cpsskins/branches/jmo-perspectives/setup/utils.py
   cpsskins/branches/jmo-perspectives/standard/io/effect.py
   cpsskins/branches/jmo-perspectives/standard/io/widget.py
Log:

- added a widget and effect importers



Modified: cpsskins/branches/jmo-perspectives/setup/utils.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/setup/utils.py   (original)
+++ cpsskins/branches/jmo-perspectives/setup/utils.py   Fri Apr 14 11:02:22 2006
@@ -59,4 +59,21 @@
         self.archive.close()
         return self.stream.getvalue()
 
+def editObject(obj, props):
+    _marker = object()
+    for k, v in props.items():
+        if getattr(obj, k, _marker) is _marker:
+            logger.warning("%s has no attribute named '%s'", repr(obj), k)
+            continue
+        setattr(obj, k, v)
+
+def serialize(obj):
+    if isinstance(obj, list):
+        return u','.join(obj)
+    return obj
+
+def unserialize(text):
+    if ',' in text:
+        return text.split(',')
+    return text
 

Modified: cpsskins/branches/jmo-perspectives/standard/io/effect.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/standard/io/effect.py    (original)
+++ cpsskins/branches/jmo-perspectives/standard/io/effect.py    Fri Apr 14 
11:02:22 2006
@@ -21,14 +21,10 @@
 from zope.component import adapts
 from zope.interface import implements
 
-from cpsskins.standard.formats.effect import IEffect
+from cpsskins.standard.formats.effect import IEffect, Effect
 from cpsskins.elements.interfaces import IIdentifiable
 from cpsskins.setup.interfaces import IDataExporter, IDataImporter
-
-def serialize(obj):
-    if isinstance(obj, list):
-        return u','.join(obj)
-    return obj
+from cpsskins.setup.utils import editObject, serialize, unserialize
 
 class Exporter(object):
     """Export effects
@@ -60,7 +56,15 @@
         self.request = request
 
     def load(self, dom):
-        context = self.context
-        # TODO
-        print dom
+        storage = self.context
+
+        props = {}
+        # TODO: get the attributes directly from IEffect?
+        for attr in 'types', 'format', 'width', 'height', 'keep_ratio':
+            props[attr] = unserialize(dom.getAttribute(attr))
+
+        effect = Effect()
+        editObject(effect, props)
+
+        storage.add(effect)
 

Modified: cpsskins/branches/jmo-perspectives/standard/io/widget.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/standard/io/widget.py    (original)
+++ cpsskins/branches/jmo-perspectives/standard/io/widget.py    Fri Apr 14 
11:02:22 2006
@@ -21,14 +21,10 @@
 from zope.component import adapts
 from zope.interface import implements
 
-from cpsskins.standard.formats.widget import IWidget
+from cpsskins.standard.formats.widget import IWidget, Widget
 from cpsskins.elements.interfaces import IIdentifiable
 from cpsskins.setup.interfaces import IDataExporter, IDataImporter
-
-def serialize(obj):
-    if isinstance(obj, list):
-        return u','.join(obj)
-    return obj
+from cpsskins.setup.utils import editObject, serialize, unserialize
 
 class Exporter(object):
     """Export widgets
@@ -60,7 +56,14 @@
         self.request = request
 
     def load(self, dom):
-        context = self.context
-        # TODO
-        print dom
+        storage = self.context
+
+        props = {}
+        # TODO: get the attributes directly from IWidget?
+        props['types'] = unserialize(dom.getAttribute('types'))
+
+        widget = Widget()
+        editObject(widget, props)
+
+        storage.add(widget)
 
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to