Author: jmorliaguet Date: Mon May 1 22:58:29 2006 New Revision: 3012 Modified: cpsskins/branches/paris-sprint-2006/elements/adapters.py cpsskins/branches/paris-sprint-2006/elements/configure.zcml cpsskins/branches/paris-sprint-2006/setup/interfaces.py cpsskins/branches/paris-sprint-2006/setup/io.py cpsskins/branches/paris-sprint-2006/standard/io/relation.py cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py Log:
- canvas elements can be imported Modified: cpsskins/branches/paris-sprint-2006/elements/adapters.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/elements/adapters.py (original) +++ cpsskins/branches/paris-sprint-2006/elements/adapters.py Mon May 1 22:58:29 2006 @@ -81,11 +81,3 @@ return [] return node.values() -class ElementNameChooser: - """An adapter to choose names for elements. - """ - adapts(IElement) - implements(INameChooser) - - __used_for__ = IElement - Modified: cpsskins/branches/paris-sprint-2006/elements/configure.zcml ============================================================================== --- cpsskins/branches/paris-sprint-2006/elements/configure.zcml (original) +++ cpsskins/branches/paris-sprint-2006/elements/configure.zcml Mon May 1 22:58:29 2006 @@ -5,12 +5,6 @@ i18n_domain="cpsskins" > - <!-- name chooser for elements --> - - <adapter - factory=".adapters.ElementNameChooser" - /> - <!-- this adapter makes elements relatable --> <adapter Modified: cpsskins/branches/paris-sprint-2006/setup/interfaces.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/setup/interfaces.py (original) +++ cpsskins/branches/paris-sprint-2006/setup/interfaces.py Mon May 1 22:58:29 2006 @@ -163,8 +163,8 @@ def ignoreFields(fields): """Set the list of ignored fields.""" - def setURIMapping(mapping): - """Set the URI mapping.""" + def updateURIMapping(mapping): + """Update the URI mapping.""" def save(): """Save data as a DOM fragment.""" Modified: cpsskins/branches/paris-sprint-2006/setup/io.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/setup/io.py (original) +++ cpsskins/branches/paris-sprint-2006/setup/io.py Mon May 1 22:58:29 2006 @@ -18,6 +18,7 @@ __docformat__ = "reStructuredText" import logging + from xml.dom.minidom import Node import zope.schema @@ -26,7 +27,7 @@ from zope.component import createObject from zope.component.interfaces import ComponentLookupError from zope.interface import implements, Interface -from zope.app.container.interfaces import IItemContainer +from zope.app.container.interfaces import IItemContainer, INameChooser from cpsskins.relations.interfaces import IRelatable from cpsskins.setup.interfaces import IDOMAdapter, IIdentifiable, IType @@ -70,8 +71,8 @@ def ignoreFields(self, fields): self.ignored_fields = fields - def setURIMapping(self, mapping): - self.mapping = mapping + def updateURIMapping(self, mapping): + self.mapping.update(mapping) def save(self): """Save data in the DOM fragment. @@ -89,7 +90,7 @@ self.setDocument(other.document) self.writeAsAttributes(other.fields_as_attributes) self.ignoreFields(other.ignored_fields) - self.setURIMapping(other.mapping) + self.updateURIMapping(other.mapping) self.setObjectType(other.objecttype) class DOMAdapter(BaseDOMAdapter): @@ -97,7 +98,7 @@ """ implements(IDOMAdapter) - _reserved_attrs = u'id', u'type' + _reserved_attrs = u'id', u'type', u'value' def writeAsAttributes(self, fields): for attr in self._reserved_attrs: @@ -161,6 +162,8 @@ schema = IType(context).getContentType() + uri_mapping = {} + # properties for name, field in zope.schema.getFieldsInOrder(schema): if name in self.ignored_fields: @@ -182,27 +185,29 @@ if child_el.nodeType != Node.ELEMENT_NODE: continue + if child_el.hasAttribute(u'value'): + break + contentname = child_el.getAttribute(u'type') or child_el.tagName factory_name = u'cpsskins.%s.%s' % (self.objecttype, contentname) - try: - element = createObject(factory_name) - except ComponentLookupError: # FIXME: - continue - - importer = getMultiAdapter((element, node), IDOMAdapter) - importer.clone(self) - importer.load() + element = createObject(factory_name) + typename = IType(element).getTypeName() if IStorage.providedBy(context): - context.add(element) + context.add(element, contentname) else: - context[contentname] = element + name = INameChooser(context).chooseName(contentname, element) + context[name] = element + + importer = getMultiAdapter((element, child_el), IDOMAdapter) + importer.clone(self) + importer.load() - typename = IType(element).getTypeName() old_uri = '%s:%s' % (typename, child_el.getAttribute(u'id')) new_uri = IIdentifiable(element).getURI() - importer.setURIMapping({old_uri: new_uri}) + + importer.updateURIMapping({old_uri: new_uri}) ####################################################################### 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 Mon May 1 22:58:29 2006 @@ -54,7 +54,7 @@ uri = relate_el.getAttribute(u'uri') #uri = self.mapping[uri] - #print '%s -> %s' % (uri, self.mapping.get(uri)) + print '%s -> %s' % (uri, self.mapping.get(uri)) obj = uri # FIXME: resolve the uri Modified: cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py (original) +++ cpsskins/branches/paris-sprint-2006/ui/screens/sitemanager/views.py Mon May 1 22:58:29 2006 @@ -196,7 +196,7 @@ importer = getMultiAdapter((relation, el), IDOMAdapter) importer.setDocument(document) - importer.setURIMapping(uri_mapping) + importer.updateURIMapping(uri_mapping) importer.load() relations.add(relation) @@ -286,6 +286,7 @@ for el in root.childNodes: if el.nodeType != Node.ELEMENT_NODE: continue + contentname = el.getAttribute('type') or el.tagName factory_name = u'cpsskins.%s.%s' % (typename, contentname) obj = createObject(factory_name) @@ -336,14 +337,17 @@ document = parseString(xml) root = document.documentElement - for el in root.childNodes: + for el in root.getElementsByTagName(u'theme'): if el.nodeType != Node.ELEMENT_NODE: continue - #importer = getMultiAdapter((obj, el), IDOMAdapter) - #importer.setDocument(document) - #importer.setObjectType(typename) - #importer.load() + theme = createObject(u'cpsskins.canvas.theme') + mgr.addTheme(theme) + + importer = getMultiAdapter((theme, el), IDOMAdapter) + importer.setDocument(document) + importer.setObjectType(u'canvas') + importer.load() document.unlink() return uri_mapping -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins