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

Reply via email to