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

Reply via email to