Author: jmorliaguet
Date: Fri Apr 14 13:21:32 2006
New Revision: 2841

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

- better code until there is a generic object importer / exporter class



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 
13:21:32 2006
@@ -20,6 +20,7 @@
 from zope.app import pagetemplate
 from zope.component import adapts
 from zope.interface import implements
+from zope.schema import getFieldNamesInOrder
 
 from cpsskins.standard.formats.effect import IEffect, Effect
 from cpsskins.elements.interfaces import IIdentifiable
@@ -37,14 +38,19 @@
         return self.template()
 
     def getInfo(self):
-        attrs = 'types', 'format', 'width', 'height', 'keep_ratio'
         context = self.context
-        properties = [{'name': name, 'value': serialize(getattr(context, 
name))}
-                      for name in attrs]
+
+        properties = []
+        for name in getFieldNamesInOrder(IEffect):
+            properties.append({
+                'name': name,
+                'value': serialize(getattr(context, name)),
+                })
+
         return {
             'uri': IIdentifiable(self.context).getURI(),
             'properties': properties,
-        }
+            }
 
 class Importer(object):
     """Import effects
@@ -59,9 +65,8 @@
         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))
+        for name in getFieldNamesInOrder(IEffect):
+            props[name] = unserialize(dom.getAttribute(name))
 
         effect = Effect()
         editObject(effect, props)

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 
13:21:32 2006
@@ -20,6 +20,7 @@
 from zope.app import pagetemplate
 from zope.component import adapts
 from zope.interface import implements
+from zope.schema import getFieldNamesInOrder
 
 from cpsskins.standard.formats.widget import IWidget, Widget
 from cpsskins.elements.interfaces import IIdentifiable
@@ -37,14 +38,19 @@
         return self.template()
 
     def getInfo(self):
-        attrs = 'types',
         context = self.context
-        properties = [{'name': name, 'value': serialize(getattr(context, 
name))}
-                      for name in attrs]
+
+        properties = []
+        for name in getFieldNamesInOrder(IWidget):
+            properties.append({
+                'name': name,
+                'value': serialize(getattr(context, name)),
+                })
+
         return {
             'uri': IIdentifiable(self.context).getURI(),
             'properties': properties,
-        }
+            }
 
 class Importer(object):
     """Import widgets
@@ -59,8 +65,8 @@
         storage = self.context
 
         props = {}
-        # TODO: get the attributes directly from IWidget?
-        props['types'] = unserialize(dom.getAttribute('types'))
+        for name in getFieldNamesInOrder(IWidget):
+            props[name] = unserialize(dom.getAttribute(name))
 
         widget = Widget()
         editObject(widget, props)
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to