[Zope3-checkins] CVS: Zope3/src/zope/app/fssync - committer.py:1.5

Guido van Rossum guido@python.org
Thu, 29 May 2003 14:04:56 -0400


Update of /cvs-repository/Zope3/src/zope/app/fssync
In directory cvs.zope.org:/tmp/cvs-serv28068

Modified Files:
	committer.py 
Log Message:
In order to be able to commit thigs under ++etc++site, we need to use
traverseName(container, name) rather than container[name].


=== Zope3/src/zope/app/fssync/committer.py 1.4 => 1.5 ===
--- Zope3/src/zope/app/fssync/committer.py:1.4	Thu May 29 12:10:29 2003
+++ Zope3/src/zope/app/fssync/committer.py	Thu May 29 14:04:26 2003
@@ -33,7 +33,7 @@
 from zope.app.interfaces.annotation import IAnnotations
 from zope.app.interfaces.container import IContainer
 from zope.app.fssync.classes import Default
-from zope.app.traversing import getPath
+from zope.app.traversing import getPath, traverseName
 from zope.app.interfaces.file import IFileFactory, IDirectoryFactory
 
 class SynchronizationError(Exception):
@@ -95,14 +95,19 @@
         if not name:
             self.synch_dir(container, fspath)
         else:
-            if name not in container:
+            try:
+                traverseName(container, name)
+            except:
                 self.synch_new(container, name, fspath)
             else:
                 self.synch_old(container, name, fspath)
 
             # Now update extra and annotations
-            if name in container:
-                obj = container[name]
+            try:
+                obj = traverseName(container, name)
+            except:
+                pass
+            else:
                 adapter = self.get_adapter(obj)
                 extra = adapter.extra()
                 extrapath = fsutil.getextra(fspath)
@@ -143,7 +148,7 @@
                     self.report_conflict(fspath)
                     return
             self.create_object(container, name, entry, fspath)
-            obj = container[name]
+            obj = traverseName(container, name)
             adapter = self.get_adapter(obj)
             if IObjectDirectory.isImplementedBy(adapter):
                 self.synch_dir(obj, fspath)
@@ -153,7 +158,7 @@
         entry = self.metadata.getentry(fspath)
         if "conflict" in entry:
             self.report_conflict(fspath)
-        obj = container[name]
+        obj = traverseName(container, name)
         adapter = self.get_adapter(obj)
         if IObjectDirectory.isImplementedBy(adapter):
             self.synch_dir(obj, fspath)
@@ -222,7 +227,9 @@
                     obj = removeAllProxies(obj)
                 else:
                     raise SynchronizationError(
-                        "don't know how to create a directory")
+                        "don't know how to create a directory",
+                        container,
+                        name)
             else:
                 if factory:
                     data = self.read_file(fspath)