Tip: do scheduled site imports using load_site.py
Problem: -------- You have a certain directory structure that needs to be imported into zope every day. If you just put python z-load_site.py -p /usr/local/Zope/lib/python/ZPublisher -u user:password -v http://zope.site/dir /localdir/* in your crontab, it will fail the second time it runs, because it tries to import objects with id names that are already existing. Solution: --------- One solution could be to wrap the manage_add calls to catch these exceptions (Oleg-way:-). I didn't succeed in doing that, but I found another solution already built into Zope: modify 'def _checkId(self, id, allow_dup=0)' in '/lib/python/OFS/ObjectManager.py' to 'def _checkId(self, id, allow_dup=1)' This auto-overwrites existing objects with the same name. Only drawback: if you upload a directory that way, the existing one is removed + all its contents at that time. Hope this can be useful. PS: I've attached a patch for ObjectManager.py for Zope 2.0.1 (yeah I know, it's old). To use it: patch -iObjectManager.py.diff ObjectManager.py you may need to modify '-iObjectManager.py.diff' to point to another directory... -- Maarten Slaets Web Developer KPNQwest Belgium http://www.fonky.com/vcard/MaartenSlaets/ 194c194 < def _checkId(self, id, allow_dup=0): ---
def _checkId(self, id, allow_dup=1):
Maarten Slaets wrote:
Problem: -------- You have a certain directory structure that needs to be imported into zope every day. If you just put
python z-load_site.py -p /usr/local/Zope/lib/python/ZPublisher -u user:password -v http://zope.site/dir /localdir/*
in your crontab, it will fail the second time it runs, because it tries to import objects with id names that are already existing.
Solution: --------- One solution could be to wrap the manage_add calls to catch these exceptions (Oleg-way:-). I didn't succeed in doing that, but I found another solution already built into Zope:
modify 'def _checkId(self, id, allow_dup=0)' in '/lib/python/OFS/ObjectManager.py' to 'def _checkId(self, id, allow_dup=1)'
This auto-overwrites existing objects with the same name. Only drawback: if you upload a directory that way, the existing one is removed + all its contents at that time.
Hope this can be useful.
PS: I've attached a patch for ObjectManager.py for Zope 2.0.1 (yeah I know, it's old). To use it:
patch -iObjectManager.py.diff ObjectManager.py
you may need to modify '-iObjectManager.py.diff' to point to another directory...
-- Maarten Slaets Web Developer KPNQwest Belgium http://www.fonky.com/vcard/MaartenSlaets/
----------------------------------------------------------------------------
ObjectManager.py.diffName: ObjectManager.py.diff Type: Plain Text (text/plain)
-- Maarten Slaets Web Developer KPNQwest Belgium http://www.fonky.com/vcard/MaartenSlaets/
participants (1)
-
Maarten Slaets