[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)