Author: jmorliaguet Date: Sun Jul 2 18:06:49 2006 New Revision: 3588 Modified: cpsskins/branches/paris-sprint-2006/setup/io/utils.py cpsskins/branches/paris-sprint-2006/standard/formats/layout.py cpsskins/branches/paris-sprint-2006/standard/io/layout.py cpsskins/branches/paris-sprint-2006/standard/io/relation.py cpsskins/branches/paris-sprint-2006/storage/locations.py
Log: - fixed the import of locations Modified: cpsskins/branches/paris-sprint-2006/setup/io/utils.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/setup/io/utils.py (original) +++ cpsskins/branches/paris-sprint-2006/setup/io/utils.py Sun Jul 2 18:06:49 2006 @@ -164,7 +164,6 @@ if contentname != typename: factory_name = u'%s.%s' % (factory_name, contentname) obj = createObject(factory_name) - storage.add(obj) importer = getMultiAdapter((obj, el), IDOMAdapter) importer.archive = archive @@ -173,6 +172,9 @@ importer.updateURIMapping() importer.load() + # add the object to the storage afterwards + storage.add(obj) + uri_mapping.update(importer.mapping) document.unlink() Modified: cpsskins/branches/paris-sprint-2006/standard/formats/layout.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/standard/formats/layout.py (original) +++ cpsskins/branches/paris-sprint-2006/standard/formats/layout.py Sun Jul 2 18:06:49 2006 @@ -99,8 +99,7 @@ def __setitem__(self, k, v): if not isinstance(v, basestring): raise TypeError("Only strings can be stored in the layout objects.") - # types may not have been initialized - if self.types and k not in self: + if k not in self: raise KeyError("No such property: %s" % k) self.data[k] = v @@ -134,8 +133,8 @@ """A vocabulary that contains the list of widgets. """ layout_types = [ - (u('Container'), u'container'), - (u('Contained'), u'contained'), + (_(u'Container'), u'container'), + (_(u'Contained'), u'contained'), ] return SimpleVocabulary.fromItems(layout_types) Modified: cpsskins/branches/paris-sprint-2006/standard/io/layout.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/standard/io/layout.py (original) +++ cpsskins/branches/paris-sprint-2006/standard/io/layout.py Sun Jul 2 18:06:49 2006 @@ -18,16 +18,20 @@ __docformat__ = "reStructuredText" from zope.interface import implements +from zope.schema import getFields from cpsskins.setup.io import BaseDOMAdapter -from cpsskins.setup.io.interfaces import IDOMAdapter +from cpsskins.setup.io.interfaces import IDOMAdapter, IFieldIO from cpsskins.relations.interfaces import IRelatable +from cpsskins.standard.formats.layout import ILayout class DOMAdapter(BaseDOMAdapter): """DOM adapter for layouts """ implements(IDOMAdapter) + fields = getFields(ILayout) + def save(self): context = self.context node = self.node @@ -37,6 +41,9 @@ layout_el = document.createElement(u'layout') layout_el.setAttribute(u'id', unicode(IRelatable(context))) + field_io = IFieldIO(self.fields['types'], None) + layout_el.setAttribute(u'types', field_io.dump(context.types)) + for name, value in context.items(): prop_el = document.createElement(u'property') prop_el.setAttribute(u'name', name) @@ -49,6 +56,9 @@ context = self.context node = self.node + field_io = IFieldIO(self.fields['types'], None) + context.types = field_io.load(node.getAttribute('types')) + for prop in node.getElementsByTagName(u'property'): name = prop.getAttribute(u'name') value = prop.getAttribute(u'value') Modified: cpsskins/branches/paris-sprint-2006/standard/io/relation.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/standard/io/relation.py (original) +++ cpsskins/branches/paris-sprint-2006/standard/io/relation.py Sun Jul 2 18:06:49 2006 @@ -57,7 +57,12 @@ relates = () for relate_el in node.getElementsByTagName(u'relate'): uri = relate_el.getAttribute(u'uri') - obj = self.mapping[uri] + try: + obj = self.mapping[uri] + # the uri is a simple string which cannot be used to resolve + # elements + except KeyError: + obj = unicode(uri) relates += obj, Modified: cpsskins/branches/paris-sprint-2006/storage/locations.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/storage/locations.py (original) +++ cpsskins/branches/paris-sprint-2006/storage/locations.py Sun Jul 2 18:06:49 2006 @@ -156,10 +156,13 @@ def modifiedSubscriber(event): location = event.object - old_data = event.old_data - storage = getParent(location) + try: + storage = getParent(location) + # the object has not been added to the storage yet + except TypeError: + return - old_key = storage.computeKey(**old_data) + old_key = storage.computeKey(**event.old_data) storage.remove([old_key]) storage.add(location) -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins