[Zope] webdav and PUT_factory

Luca Dall'Olio luca.dallolio at gmail.com
Mon Feb 27 07:29:53 EST 2006

First of all, I would like to thank everybody for your accurate and fast 

I am working with a small group of developers, each in different places 
and working at different times.
According to my past experience in java, this means "cvs" ^_^
I have some doubts about how to synchronize Zope development with cvs or 
Should I stop using the ZMI? Should I develop a Zope Product instead?
Should I use fsdump instead of webdav to export from zope ? Should I 
use  webdav when deploying back to Zope?

This is my actual state-of-the-art about team management in Zope :
We develop inside locally installed Zope Instances, using the ZMI.
At the end of the day, we export the work done using webdav, and this 
works for DTML documents, DTML methods and ZSQL methods.
After that, we commit inside the source code repository, using the 
update, diff and merge features to synchronize with other developers' work.
We need to deploy to a Zope server in order to test the integration of 
developers' code, so I wrote a little PUT_factory to re-create the right 
objects, this is a snippet:

        elif ext == 'zsql':
            from Products.ZSQLMethods.SQL import SQL
            return SQL(name, '', 'daticonvegno', '' ,'')
        elif ext == 'dtml':
            from OFS.DTMLDocument import DTMLDocument
            return DTMLDocument( '', __name__=name )
        elif ext == 'dtmm':
            from OFS.DTMLMethod import DTMLMethod
            return DTMLMethod( '', __name__=name )
        elif major == 'text':
            from OFS.DTMLDocument import DTMLDocument
            return OFS.DTMLDocument.DTMLDocument( '', __name__=name )

As you can see, it uses extensions to understand the type of the file. 
This has some minor drawbacks :
1) you have to use extensions to make it work, otherwise you will have 
trouble at deploy-time
2) some additional parameters such as the connectionIds for ZSQLMethods 
must be auto-magically chosen by the PUT_factory
3) what about more complex objects, such as Plone, Archetypes or 
Openflow? should I map them all in the PUT_factory?

Is this the "right way" to do things in Zope? Is there any native 
solution for Source Code Versioning and Team Management?
How do other team solve this issue? Any advice is welcome!

Thank you very much in advance,

More information about the Zope mailing list