[Zope-dev] modify modification time of an object inside a product
Andreas Hölzl
hoelzla@t-online.de
Mon, 14 Jan 2002 10:01:06 +0100
dear zope gurus,
i hope, this is the right place to post this:
i'm trying to modify a modified ZSyncer product.
The first modification implements bidirectional syncronisation.
It simply exports any Zope object, transmitts it via XML-RPC and imports it
remotely, or vice versa.
The problem i'm trying to fix is that synced objects should have synced
timestamps and not the original one vs. the importation time.
My solution is to *ship* the modification time of the original object
together with the object, but i don't know how to explicitly change the
timestamp of the freshly imported one.
the essential part of the code is the following method, which imports the
object -- it gets the object data, the path of the object and its
modification time (see "# change modification time"):
def manage_addXMLRPC(self, data, obj_path, mod_time=0, add_in=1):
""" Adds / imports an object """
# make sure we always get a string or a list
if type(obj_path) == type('string'): obj_path =
string.split(obj_path, '/')
# object lets try finding the parent
try: parent = self.restrictedTraverse(obj_path[:-1])
except KeyError: return 404
# lets check they are allowed to do this
c = getSecurityManager().checkPermission
allowed = 1
for perm in ['Delete objects', 'Import/Export objects']:
if not c(perm, parent): allowed = 0
if not allowed: return 403
# if there is one there already, delete it
if obj_path[-1] in parent.objectIds():
parent.manage_delObjects([obj_path[-1],])
# lets do it
if add_in:
# fake a file using StringIO
file = StringIO()
file.write(self._decode(data))
file.seek(0)
# now import
new = parent._p_jar.importFile(file)
parent._setObject(new.getId(), new)
# change modification time
my_obj = self.restrictedTraverse(obj_path)
my_obj._p_mtime = mod_time
# yay!
return 200
i tryed to change the modification time via the _p_mtime attribute (because
bobobase_modification_time() returns it normally), but it doesn't work.
I played around with it but there was no enlightenment.
i guess its a secret of the ZODB.
please help me to get on the right path.
yours faithfully.
Andreas Hoelzl