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