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