diff --git a/INSTALL.txt b/INSTALL.txt
new file mode 100644
index 0000000..e34ee7b
--- /dev/null
+++ b/INSTALL.txt
@@ -0,0 +1,112 @@
+We assume the installation in the folder /srv/zinstances/site421
+ (that can be changed) and on an ubuntu distribution.
+Your real username must replace in our commands the string "username".
+Each command, specified by the symbol ">", can be executed
+ (without the symbol >).
+
+First we become root
+> sudo -s
+
+We install the necessary libraries
+> apt-get install build-essential
+> apt-get install libreadline5-dev
+> apt-get install zlib1g-dev (support zlib)
+> apt-get install libjpeg62-dev
+> apt-get install subversion
+> apt-get install libpq-dev
+
+We work in the folder /srv
+> cd /srv
+
+We change the owner of the folder to avoid continue working as root
+> chown -R username:username .
+
+We leave the user root.
+> exit
+
+We create some directories
+> mkdir install
+> mkdir zinstances
+> cd install
+
+We install python2.7 that will be used to run the buildout and zope instance
+> wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
+> tar xvzf Python-2.7.3.tgz
+> cd Python-2.7.3
+> ./configure --prefix=/srv/python273
+> make
+> make install
+
+We install the python utility easy_install
+> cd /srv/install
+> wget http://peak.telecommunity.com/dist/ez_setup.py
+> /srv/python273/bin/python ez_setup.py
+
+We install the python utility virtualenv
+> /srv/python273/bin/easy_install virtualenv
+
+We can define a cache for buildout
+See http://www.imio.be/support/documentation/tutoriels/utilisation-dun-buildout/definition-dun-cache-pour-buildout/
+
+We download the buildout files in our folder
+> cd /srv/zinstances
+> svn co http://svn.communesplone.org/svn/communesplone/buildout/server.sites/tags/make421/ site421
+> cd site421
+
+We modify the Makefile file to indicate the real path of the virtualenv utility.
+To do that, you can edit the file in a simple text editor.
+It's necessary to replace the line "virtualenv-2.7 --no-site-packages ." by
+ "/srv/python273/bin/virtualenv --no-site-packages ."
+OR
+You can create a link to our virtualenv without modifying Makefile
+ "ln -s /srv/python273/bin/virtualenv /usr/local/bin/virtualenv-2.7"
+
+we initialize the buildout
+> make bootstrap
+
+1) Use in development (without ZEO, with debug products)
+
+We execute the buildout after each modification in the buildout.cfg file
+> make buildout
+OR
+> bin/buildout -v
+
+We start the zope server.
+> bin/instance1 fg
+OR
+> bin/instance1 start
+
+We can connect the zope server in a browser on the following address http://localhost:8080/manage_main
+
+We can add a mount point (separate database file, defined in the file zope_add.conf)
+=> choose in the list (up right in the browser page) "ZODB Mount Point"
+Select a mount point name ("xxx" and click on "Create selected mount points").
+
+All objects added in the zope folder "xxx" will be stored in the db file "xxx.fs"
+ in place of in "Data.fs".
+
+2) Usage in production (multiple Zope instances for the same database, ZEO mode)
+
+We can replace in the file buildout.cfg the name dev.cfg by prod.cfg.
+
+We execute the buildout after each modification in the buildout.cfg file
+> make buildout
+OR
+> bin/buildout -v
+
+We start the zeo server.
+> bin/zeoserver start
+
+We start each zope server (following instance name section).
+> bin/instance1 fg
+OR
+> bin/instance1 start
+
+We can connect the zope server in a browser on the following address http://localhost:8080/manage_main
+
+We can add a mount point (separate database file, defined in the file zeo_add.conf and zope_add_zeo.conf)
+=> choose in the list (up right in the browser page) "ZODB Mount Point"
+Select a mount point name ("xxx" and click on "Create selected mount points").
+
+All objects added in the zope folder "xxx" will be stored in the db file "xxx.fs"
+ in place of in "Data.fs".
diff --git a/INSTALL_fr.txt b/INSTALL_fr.txt
new file mode 100644
index 0000000..fcb4753
--- /dev/null
+++ b/INSTALL_fr.txt
@@ -0,0 +1,115 @@
+On suppose l'installation dans un répertoire /srv/zinstances/site421
+ (qui peut être changé) et sur une distribution ubuntu.
+Le nom de votre utilisateur est remplacé dans nos commandes par "votreuser".
+ Veuillez utiliser le votre à la place.
+Chaque commande, précisée ci-dessous après le symbole ">", peut être exécutée
+ (sans taper le symbole >).
+
+On passe d'abord en root
+> sudo -s
+
+On installe des librairies nécessaires
+> apt-get install build-essential
+> apt-get install libreadline5-dev
+> apt-get install zlib1g-dev (support zlib)
+> apt-get install libjpeg62-dev
+> apt-get install subversion
+> apt-get install libpq-dev
+
+On va travailler dans le dossier /srv
+> cd /srv
+
+On se met propriétaire du dossier pour ne plus devoir travailler en root
+> chown -R votreuser:votreuser .
+
+On quitte l'utilisateur root.
+> exit
+
+On crée maintenant une arborescence de dossiers
+> mkdir install
+> mkdir zinstances
+> cd install
+
+On va installer un python2.7 qui sera utilisé dans notre buildout
+> wget http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz
+> tar xvzf Python-2.7.3.tgz
+> cd Python-2.7.3
+> ./configure --prefix=/srv/python273
+> make
+> make install
+
+On installe l'utilitaire python easy_install
+> cd /srv/install
+> wget http://peak.telecommunity.com/dist/ez_setup.py
+> /srv/python273/bin/python ez_setup.py
+
+On installe l'utilitaire python virtualenv
+> /srv/python273/bin/easy_install virtualenv
+
+On définit un cache pour buildout (si ce n'est déjà fait)
+Voir http://www.imio.be/support/documentation/tutoriels/utilisation-dun-buildout/definition-dun-cache-pour-buildout/
+
+On télécharge le buildout dans un dossier
+> cd /srv/zinstances
+> svn co http://svn.communesplone.org/svn/communesplone/buildout/server.sites/tags/make421/ site421
+> cd site421
+
+On modifie le fichier Makefile pour indiquer le chemin réel de virtualenv.
+Pour cela, on peut ouvrir le fichier avec un éditeur de texte.
+Il faut remplacer la ligne "virtualenv-2.7 --no-site-packages ." par
+ "/srv/python273/bin/virtualenv --no-site-packages ."
+OU
+On peut créer un lien symbolique vers notre virtualenv sans modifier alors le fichier Makefile
+ "ln -s /srv/python273/bin/virtualenv /usr/local/bin/virtualenv-2.7"
+
+On initialise le buildout
+> make bootstrap
+
+1) Utilisation en développement (sans ZEO, avec des outils de debug)
+
+Le fichier buildout.cfg utilise par défaut dev.cfg.
+
+On exécute le buildout après chaque modification du fichier buildout.cfg
+> make buildout
+OU
+> bin/buildout -v
+
+On démarre le serveur zope.
+> bin/instance1 fg
+OU
+> bin/instance1 start
+
+On peut se connecter à zope dans un navigateur sur l'adresse http://localhost:8080/manage_main
+
+On peut ajouter un mount point (fichier db séparé à définir dans le fichier zope_add.conf)
+=> choisir dans la liste (en haut à droite de la page du navigateur) "ZODB Mount Point"
+Sélectionner le nom du mount point désiré ("xxx" et cliquer sur "Create selected mount points").
+
+Tout ce qui va être ajouté dans le dossier "xxx" sera maintenant localisé dans le fichier db "xxx.fs"
+ plutôt que dans "Data.fs".
+
+2) Utilisation en production (plusieurs instances Zope pour la même database, ZEO)
+
+Il faut remplacer dans le fichier buildout.cfg l'appel à dev.cfg par prod.cf.
+
+On exécute le buildout après chaque modification du fichier buildout.cfg
+> make buildout
+OU
+> bin/buildout -v
+
+On démarre le serveur ZEO.
+> bin/zeoserver start
+
+On démarre chaque instance zope (suivant le nom de la section définie).
+> bin/instance1 fg
+OU
+> bin/instance1 start
+
+On peut se connecter à zope dans un navigateur sur l'adresse http://localhost:8080/manage_main
+
+On peut ajouter un mount point (fichier db séparé à définir dans les fichiers zeo_add.conf et zope_add_zeo.conf)
+=> choisir dans la liste (en haut à droite de la page du navigateur) "ZODB Mount Point"
+Sélectionner le nom du mount point désiré ("xxx" et cliquer sur "Create selected mount points").
+
+Tout ce qui va être ajouté dans le dossier "xxx" sera maintenant localisé dans le fichier db "xxx.fs"
+ plutôt que dans "Data.fs".
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..0f25bd3
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,27 @@
+#!/usr/bin/make
+#
+all: run
+
+.PHONY: bootstrap
+bootstrap:
+ virtualenv-2.7 --no-site-packages .
+ ./bin/python bootstrap.py
+
+.PHONY: buildout
+buildout:
+ if ! test -f bin/buildout;then make bootstrap;fi
+ bin/buildout -v
+
+.PHONY: standard-config
+standard-config:
+ if ! test -f bin/buildout;then make bootstrap;fi
+ bin/buildout -vt 5 -c standard-config.cfg
+
+.PHONY: run
+run:
+ if ! test -f bin/instance1;then make buildout;fi
+ bin/instance1 fg
+
+.PHONY: cleanall
+cleanall:
+ rm -fr develop-eggs downloads eggs parts .installed.cfg
diff --git a/README.txt b/README.txt
new file mode 100644
index 0000000..f0591bb
--- /dev/null
+++ b/README.txt
@@ -0,0 +1,17 @@
+This buildout relates the configuration of the application zope instance of the CommunesPlone central server.
+
+The main config file is buildout.cfg.
+Is is empty by default.
+It's necessary to call in it a subconfig file name: dev.cfg, prod.cfg, ...
+
+The included external products are listed in cfg file:
+ - section [productdistros] (release form)
+ - section [svnproducts] (svn form)
+ - subsection eggs
+
+The directory 'parts/omelette' contains (as links) all the used products.
+
+Outside zeo mode (dev.cfg, base.cgf), a "zope_add.conf" extends the generated zope.conf to add mount_points definition.
+In zeo mode (prod.cfg), a "zope_add_zeo.conf" and "zeo_add.conf" extend the generated zope.conf and zeo.conf to add mount_points definition.
+
+The install process is described in the file : INSTALL.txt
diff --git a/base.cfg b/base.cfg
new file mode 100755
index 0000000..c209f82
--- /dev/null
+++ b/base.cfg
@@ -0,0 +1,171 @@
+[buildout]
+extensions =
+ buildout.dumppickedversions
+ mr.developer
+dump-picked-versions-file = versions-picked.cfg
+overwrite-picked-versions-file = true
+#allow-picked-versions = false
+
+parts =
+ productdistros
+ svnproducts
+ omelette
+ instance1
+ zopepy
+ repozo
+
+# If you want to get the last versions of eggs, you have to comment the line "versions-prod.cfg"
+extends =
+ http://dist.plone.org/release/4.2.3/versions.cfg
+ versions-base.cfg
+
+versions=versions
+
+# Add additional egg download sources here. dist.plone.org contains archives
+# of Plone packages.
+find-links =
+ http://dist.plone.org/release/4.2.3
+ http://dist.plone.org/thirdparty
+ http://download.zope.org/ppix/
+ http://download.zope.org/distribution/
+ http://effbot.org/downloads
+ http://b.pypi.python.org
+ http://c.pypi.python.org
+ http://d.pypi.python.org
+
+# Add additional eggs here
+# elementtree is required by Plone
+eggs =
+ Plone
+ Pillow
+# PyXML
+#- hotfix -#
+# Products.PloneHotfix20110720 # <= 3.3.5 , <= 4.0.3
+# Products.PloneHotfix20110531 # <= 3.3.5 , <= 4.0.5
+# Products.PloneHotfix20121106 # <= 4.2.2, <= 4.3a2
+# Products.Zope_Hotfix_20110622 # <= 3.3.5 , <= 4.0.7, <= 4.1rc3
+
+# Reference any eggs you are developing here, one per line
+# e.g.: develop = src/my.package
+develop =
+# src/communesplone.iconified_document_actions
+# src/communesplone.layout
+
+# Only take stable eggs
+#prefer-final = true
+
+# Always unzip eggs
+unzip = true
+
+auto-checkout +=
+
+[sources]
+
+
+# Use this section to download additional old-style products.
+# List any number of URLs for product tarballs under URLs (separate
+# with whitespace, or break over several lines, with subsequent lines
+# indented). If any archives contain several products inside a top-level
+# directory, list the archive file name (i.e. the last part of the URL,
+# normally with a .tar.gz suffix or similar) under 'nested-packages'.
+# If any archives extract to a product directory with a version suffix, list
+# the archive name under 'version-suffix-packages'.
+
+[productdistros]
+recipe = plone.recipe.distros
+urls =
+# file://${buildout:directory}/ZPsycopgDA_2013.tgz
+nested-packages =
+version-suffix-packages =
+
+[svnproducts]
+recipe = infrae.subversion
+urls =
+# http://svn.communesplone.org/svn/communesplone/ACPTranslation/tags/plone3x ACPTranslation
+# http://svn.communesplone.org/svn/communesplone/contacts/tags/0.6 contacts
+ http://svn.communesplone.org/svn/communesplone/CPUtils/trunk CPUtils
+
+[omelette]
+recipe = collective.recipe.omelette
+eggs = ${instance1:eggs}
+products = ${instance1:products}
+#packages = ${zope2:location}/lib/python ./
+
+[instance1]
+recipe = plone.recipe.zope2instance
+#effective-user =
+user = admin:admin
+http-address = 8081
+zserver-threads = 4
+debug-mode = off
+verbose-security = off
+zope-conf-additional =
+ %define FILESTORAGE ${buildout:directory}/var/filestorage
+ %define BLOBSTORAGE ${buildout:directory}/var/blobstorage
+ %include ${buildout:directory}/zope_add.conf
+environment-vars =
+ PYTHON_EGG_CACHE ${buildout:directory}/python-eggs
+ zope_i18n_compile_mo_files true
+
+# If you want Zope to know about any additional eggs, list them here.
+# This should include any development eggs you listed in develop-eggs above,
+# e.g. eggs = ${buildout:eggs} my.package
+eggs =
+ ${buildout:eggs}
+ Products.DocFinderTab
+# Products.LinguaPlone
+ Products.PloneFormGen
+# Products.PloneGazette
+# Products.PlonePopoll
+ Products.csvreplicata
+# Solgema.fullcalendar
+# atreal.mailservices
+ beyondskins.responsive
+# communesplone.iconified_document_actions
+# communesplone.layout
+# collective.captcha # collective.pfg.norobots is more user friendly
+ collective.ckeditor
+# collective.contentleadimage
+ collective.easyslider
+# collective.easytemplate
+# collective.js.fancybox
+ collective.pfg.norobots
+ collective.plonetruegallery
+# collective.ptg.fancybox
+ collective.ptg.highslide
+ collective.quickupload
+# collective.tinymcetemplates
+# medialog.subskins
+# collective.zipfiletransport #2.2.1 not working in P4
+ plone.app.dexterity
+ plone.app.multilingual
+ plone.multilingualbehavior
+
+# If you want to register ZCML slugs for any packages, list them here.
+# e.g. zcml = my.package my.other.package
+zcml =
+# Solgema.fullcalendar
+# atreal.mailservices
+# communesplone.iconified_document_actions
+# communesplone.layout
+# collective.contentleadimage
+# collective.js.fancybox
+# collective.ptg.fancybox
+# collective.tinymcetemplates
+# medialog.subskins
+
+products =
+ ${buildout:directory}/products
+ ${productdistros:location}
+ ${svnproducts:location}
+
+[zopepy]
+recipe = zc.recipe.egg
+eggs = ${instance1:eggs}
+interpreter = zopepy
+scripts = zopepy
+
+[repozo]
+recipe = zc.recipe.egg
+eggs = ZODB3
+scripts = repozo
diff --git a/bin/subproducts.sh b/bin/subproducts.sh
new file mode 100755
index 0000000..92f9647
--- /dev/null
+++ b/bin/subproducts.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+ScriptLocation="."
+if [[ $0 == '/'* ]];
+then ScriptLocation="`dirname $0`"
+else ScriptLocation="`pwd`"/"`dirname $0`"
+fi
+
+# Installation of psycopg 2.0.13
+cd $ScriptLocation/../subproducts
+#tar -xvzf psycopg2-2.0.13.tar.gz
+#cd psycopg2-2.0.13
+#$ScriptLocation/python ./setup.py install
+#cd ..
+#rm -f -R psycopg2-2.0.13
+
diff --git a/bin/svn_global.sh b/bin/svn_global.sh
new file mode 100755
index 0000000..caf6a75
--- /dev/null
+++ b/bin/svn_global.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+svnparam="st"
+if [ "$*" != "" ];
+then
+ svnparam=$*
+else
+ echo "!! You must pass a svn command as parameter : st, diff, up, ..."
+ exit 0
+fi
+
+ScriptLocation="."
+if [[ $0 == '/'* ]];
+then
+ ScriptLocation="`dirname $0`"
+else
+ ScriptLocation="`pwd`"/"`dirname $0`"
+fi
+
+# svn diff on all subdirectories of parts/svnproducts
+find $ScriptLocation/../parts/svnproducts/ -maxdepth 1 -mindepth 1 -type d -name "??*" -print0 |xargs -0 svn $svnparam
diff --git a/booking.cfg b/booking.cfg
new file mode 100644
index 0000000..19baf9a
--- /dev/null
+++ b/booking.cfg
@@ -0,0 +1,18 @@
+[buildout]
+auto-checkout +=
+ Products.PloneBooking
+
+[sources]
+Products.PloneBooking = svn https://svn.plone.org/svn/collective/Products.PloneBooking/trunk/
+
+[instance1]
+#use the instance1 eggs to extends the base eggs defined in [buildout]
+recipe = plone.recipe.zope2instance
+
+eggs +=
+ Products.PloneBooking
+
+zcml +=
+
+[versions]
+#Products.PloneBooking =
diff --git a/bootstrap.py b/bootstrap.py
new file mode 100644
index 0000000..1bfffe3
--- /dev/null
+++ b/bootstrap.py
@@ -0,0 +1,55 @@
+##############################################################################
+#
+# Copyright (c) 2006 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Bootstrap a buildout-based project
+
+Simply run this script in a directory containing a buildout.cfg.
+The script accepts buildout command-line options, so you can
+use the -c option to specify an alternate configuration file.
+
+$Id$
+"""
+
+import os, shutil, sys, tempfile, urllib2
+
+tmpeggs = tempfile.mkdtemp()
+
+try:
+ import pkg_resources
+except ImportError:
+ ez = {}
+ exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
+ ).read() in ez
+ ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
+
+ import pkg_resources
+
+cmd = 'from setuptools.command.easy_install import main; main()'
+if sys.platform == 'win32':
+ cmd = '"%s"' % cmd # work around spawn lamosity on windows
+
+ws = pkg_resources.working_set
+assert os.spawnle(
+ os.P_WAIT, sys.executable, sys.executable,
+ '-c', cmd, '-mqNxd', tmpeggs, 'zc.buildout',
+ dict(os.environ,
+ PYTHONPATH=
+ ws.find(pkg_resources.Requirement.parse('setuptools')).location
+ ),
+ ) == 0
+
+ws.add_entry(tmpeggs)
+ws.require('zc.buildout')
+import zc.buildout.buildout
+zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap'])
+shutil.rmtree(tmpeggs)
diff --git a/buildout.cfg b/buildout.cfg
new file mode 100755
index 0000000..231a5d4
--- /dev/null
+++ b/buildout.cfg
@@ -0,0 +1,4 @@
+[buildout]
+# Add the config name you want to use in the extends attribute: dev.cfg, prod.cfg, ...
+extends =
+ dev.cfg
\ No newline at end of file
diff --git a/dev.cfg b/dev.cfg
new file mode 100644
index 0000000..4d6db7b
--- /dev/null
+++ b/dev.cfg
@@ -0,0 +1,45 @@
+[buildout]
+extends =
+ base.cfg
+ versions-dev.cfg
+
+parts +=
+ test
+
+[instance1]
+#use the instance1 eggs to extends the base eggs defined in [buildout]
+recipe = plone.recipe.zope2instance
+debug-mode = on
+verbose-security = on
+environment-vars +=
+ ENABLE_PRINTING_MAILHOST True
+
+eggs +=
+ Products.Clouseau
+# Products.PDBDebugMode
+ Products.PrintingMailHost
+ archetypes.schematuning
+ ipdb
+ iw.debug
+ plone.reload
+zcml +=
+ iw.debug
+
+# create bin/test command
+[test]
+recipe = zc.recipe.testrunner
+defaults = ['--auto-color', '--auto-progress']
+#extra-paths = ${buildout:directory}/parts/omelette
+#include-site-packages = true
+eggs =
+ Pillow
+ Plone
+# Products.csvreplicata
+ collective.MockMailHost
+# Products.PlonePopoll
+ ipdb
+ plone.app.testing
+environment = testenv
+
+[testenv]
+zope_i18n_compile_mo_files = true
diff --git a/ez_setup.py b/ez_setup.py
new file mode 100644
index 0000000..98e4cba
--- /dev/null
+++ b/ez_setup.py
@@ -0,0 +1,235 @@
+#!python
+"""Bootstrap setuptools installation
+
+If you want to use setuptools in your package's setup.py, just include this
+file in the same directory with it, and add this to the top of your setup.py::
+
+ from ez_setup import use_setuptools
+ use_setuptools()
+
+If you want to require a specific version of setuptools, set a download
+mirror, or use an alternate download directory, you can do so by supplying
+the appropriate options to ``use_setuptools()``.
+
+This file can also be run as a script to install or upgrade setuptools.
+"""
+import sys
+DEFAULT_VERSION = "0.6c9"
+DEFAULT_URL = "http://pypi.python.org/packages/%s/s/setuptools/" % sys.version[:3]
+
+md5_data = {
+ 'setuptools-0.6b1-py2.3.egg': '8822caf901250d848b996b7f25c6e6ca',
+ 'setuptools-0.6b1-py2.4.egg': 'b79a8a403e4502fbb85ee3f1941735cb',
+ 'setuptools-0.6b2-py2.3.egg': '5657759d8a6d8fc44070a9d07272d99b',
+ 'setuptools-0.6b2-py2.4.egg': '4996a8d169d2be661fa32a6e52e4f82a',
+ 'setuptools-0.6b3-py2.3.egg': 'bb31c0fc7399a63579975cad9f5a0618',
+ 'setuptools-0.6b3-py2.4.egg': '38a8c6b3d6ecd22247f179f7da669fac',
+ 'setuptools-0.6b4-py2.3.egg': '62045a24ed4e1ebc77fe039aa4e6f7e5',
+ 'setuptools-0.6b4-py2.4.egg': '4cb2a185d228dacffb2d17f103b3b1c4',
+ 'setuptools-0.6c1-py2.3.egg': 'b3f2b5539d65cb7f74ad79127f1a908c',
+ 'setuptools-0.6c1-py2.4.egg': 'b45adeda0667d2d2ffe14009364f2a4b',
+ 'setuptools-0.6c2-py2.3.egg': 'f0064bf6aa2b7d0f3ba0b43f20817c27',
+ 'setuptools-0.6c2-py2.4.egg': '616192eec35f47e8ea16cd6a122b7277',
+ 'setuptools-0.6c3-py2.3.egg': 'f181fa125dfe85a259c9cd6f1d7b78fa',
+ 'setuptools-0.6c3-py2.4.egg': 'e0ed74682c998bfb73bf803a50e7b71e',
+ 'setuptools-0.6c3-py2.5.egg': 'abef16fdd61955514841c7c6bd98965e',
+ 'setuptools-0.6c4-py2.3.egg': 'b0b9131acab32022bfac7f44c5d7971f',
+ 'setuptools-0.6c4-py2.4.egg': '2a1f9656d4fbf3c97bf946c0a124e6e2',
+ 'setuptools-0.6c4-py2.5.egg': '8f5a052e32cdb9c72bcf4b5526f28afc',
+ 'setuptools-0.6c5-py2.3.egg': 'ee9fd80965da04f2f3e6b3576e9d8167',
+ 'setuptools-0.6c5-py2.4.egg': 'afe2adf1c01701ee841761f5bcd8aa64',
+ 'setuptools-0.6c5-py2.5.egg': 'a8d3f61494ccaa8714dfed37bccd3d5d',
+ 'setuptools-0.6c6-py2.3.egg': '35686b78116a668847237b69d549ec20',
+ 'setuptools-0.6c6-py2.4.egg': '3c56af57be3225019260a644430065ab',
+ 'setuptools-0.6c6-py2.5.egg': 'b2f8a7520709a5b34f80946de5f02f53',
+ 'setuptools-0.6c7-py2.3.egg': '209fdf9adc3a615e5115b725658e13e2',
+ 'setuptools-0.6c7-py2.4.egg': '5a8f954807d46a0fb67cf1f26c55a82e',
+ 'setuptools-0.6c7-py2.5.egg': '45d2ad28f9750e7434111fde831e8372',
+ 'setuptools-0.6c8-py2.3.egg': '50759d29b349db8cfd807ba8303f1902',
+ 'setuptools-0.6c8-py2.4.egg': 'cba38d74f7d483c06e9daa6070cce6de',
+ 'setuptools-0.6c8-py2.5.egg': '1721747ee329dc150590a58b3e1ac95b',
+ 'setuptools-0.6c9-py2.3.egg': 'a83c4020414807b496e4cfbe08507c03',
+ 'setuptools-0.6c9-py2.4.egg': '260a2be2e5388d66bdaee06abec6342a',
+ 'setuptools-0.6c9-py2.5.egg': 'fe67c3e5a17b12c0e7c541b7ea43a8e6',
+ 'setuptools-0.6c9-py2.6.egg': 'ca37b1ff16fa2ede6e19383e7b59245a',
+}
+
+import sys, os
+try: from hashlib import md5
+except ImportError: from md5 import md5
+
+def _validate_md5(egg_name, data):
+ if egg_name in md5_data:
+ digest = md5(data).hexdigest()
+ if digest != md5_data[egg_name]:
+ print >>sys.stderr, (
+ "md5 validation of %s failed! (Possible download problem?)"
+ % egg_name
+ )
+ sys.exit(2)
+ return data
+
+def use_setuptools(
+ version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
+ download_delay=15
+):
+ """Automatically find/download setuptools and make it available on sys.path
+
+ `version` should be a valid setuptools version number that is available
+ as an egg for download under the `download_base` URL (which should end with
+ a '/'). `to_dir` is the directory where setuptools will be downloaded, if
+ it is not already available. If `download_delay` is specified, it should
+ be the number of seconds that will be paused before initiating a download,
+ should one be required. If an older version of setuptools is installed,
+ this routine will print a message to ``sys.stderr`` and raise SystemExit in
+ an attempt to abort the calling script.
+ """
+ was_imported = 'pkg_resources' in sys.modules or 'setuptools' in sys.modules
+ def do_download():
+ egg = download_setuptools(version, download_base, to_dir, download_delay)
+ sys.path.insert(0, egg)
+ import setuptools; setuptools.bootstrap_install_from = egg
+ try:
+ import pkg_resources
+ except ImportError:
+ return do_download()
+ try:
+ pkg_resources.require("setuptools>="+version); return
+ except pkg_resources.VersionConflict, e:
+ if was_imported:
+ print >>sys.stderr, (
+ "The required version of setuptools (>=%s) is not available, and\n"
+ "can't be installed while this script is running. Please install\n"
+ " a more recent version first, using 'easy_install -U setuptools'."
+ "\n\n(Currently using %r)"
+ ) % (version, e.args[0])
+ sys.exit(2)
+ else:
+ del pkg_resources, sys.modules['pkg_resources'] # reload ok
+ return do_download()
+ except pkg_resources.DistributionNotFound:
+ return do_download()
+
+def download_setuptools(
+ version=DEFAULT_VERSION, download_base=DEFAULT_URL, to_dir=os.curdir,
+ delay = 15
+):
+ """Download setuptools from a specified location and return its filename
+
+ `version` should be a valid setuptools version number that is available
+ as an egg for download under the `download_base` URL (which should end
+ with a '/'). `to_dir` is the directory where the egg will be downloaded.
+ `delay` is the number of seconds to pause before an actual download attempt.
+ """
+ import urllib2, shutil
+ egg_name = "setuptools-%s-py%s.egg" % (version,sys.version[:3])
+ url = download_base + egg_name
+ saveto = os.path.join(to_dir, egg_name)
+ src = dst = None
+ if not os.path.exists(saveto): # Avoid repeated downloads
+ try:
+ from distutils import log
+ if delay:
+ log.warn("""
+---------------------------------------------------------------------------
+This script requires setuptools version %s to run (even to display
+help). I will attempt to download it for you (from
+%s), but
+you may need to enable firewall access for this script first.
+I will start the download in %d seconds.
+
+(Note: if this machine does not have network access, please obtain the file
+
+ %s
+
+and place it in this directory before rerunning this script.)
+---------------------------------------------------------------------------""",
+ version, download_base, delay, url
+ ); from time import sleep; sleep(delay)
+ log.warn("Downloading %s", url)
+ src = urllib2.urlopen(url)
+ # Read/write all in one block, so we don't create a corrupt file
+ # if the download is interrupted.
+ data = _validate_md5(egg_name, src.read())
+ dst = open(saveto,"wb"); dst.write(data)
+ finally:
+ if src: src.close()
+ if dst: dst.close()
+ return os.path.realpath(saveto)
+
+def main(argv, version=DEFAULT_VERSION):
+ """Install or upgrade setuptools and EasyInstall"""
+ try:
+ import setuptools
+ except ImportError:
+ egg = None
+ try:
+ egg = download_setuptools(version, delay=0)
+ sys.path.insert(0,egg)
+ from setuptools.command.easy_install import main
+ return main(list(argv)+[egg]) # we're done here
+ finally:
+ if egg and os.path.exists(egg):
+ os.unlink(egg)
+ else:
+ if setuptools.__version__ == '0.0.1':
+ print >>sys.stderr, (
+ "You have an obsolete version of setuptools installed. Please\n"
+ "remove it from your system entirely before rerunning this script."
+ )
+ sys.exit(2)
+
+ req = "setuptools>="+version
+ import pkg_resources
+ try:
+ pkg_resources.require(req)
+ except pkg_resources.VersionConflict:
+ try:
+ from setuptools.command.easy_install import main
+ except ImportError:
+ from easy_install import main
+ main(list(argv)+[download_setuptools(delay=0)])
+ sys.exit(0) # try to force an exit
+ else:
+ if argv:
+ from setuptools.command.easy_install import main
+ main(argv)
+ else:
+ print "Setuptools version",version,"or greater has been installed."
+ print '(Run "ez_setup.py -U setuptools" to reinstall or upgrade.)'
+
+def update_md5(filenames):
+ """Update our built-in md5 registry"""
+
+ import re
+
+ for name in filenames:
+ base = os.path.basename(name)
+ f = open(name,'rb')
+ md5_data[base] = md5(f.read()).hexdigest()
+ f.close()
+
+ data = [" %r: %r,\n" % it for it in md5_data.items()]
+ data.sort()
+ repl = "".join(data)
+
+ import inspect
+ srcfile = inspect.getsourcefile(sys.modules[__name__])
+ f = open(srcfile, 'rb'); src = f.read(); f.close()
+
+ match = re.search("\nmd5_data = {\n([^}]+)}", src)
+ if not match:
+ print >>sys.stderr, "Internal error!"
+ sys.exit(2)
+
+ src = src[:match.start(1)] + repl + src[match.end(1):]
+ f = open(srcfile,'w')
+ f.write(src)
+ f.close()
+
+
+if __name__=='__main__':
+ if len(sys.argv)>2 and sys.argv[1]=='--md5update':
+ update_md5(sys.argv[2:])
+ else:
+ main(sys.argv[1:])
\ No newline at end of file
diff --git a/prod.cfg b/prod.cfg
new file mode 100644
index 0000000..11dd68b
--- /dev/null
+++ b/prod.cfg
@@ -0,0 +1,62 @@
+[buildout]
+extends =
+ base.cfg
+
+allow-picked-versions = false
+
+parts +=
+ debug-instance
+ zeoserver
+ logrotate
+ instance2
+ instance3
+ instance4
+
+[zeoserver]
+recipe = plone.recipe.zeoserver
+zeo-address = 8100
+#effective-user = ${instance1:effective-user}
+pack-days = 7
+pack-keep-old = false
+monitor-address = 8101
+zeo-conf-additional =
+ %define FILESTORAGE ${buildout:directory}/var/filestorage
+ %define BLOBSTORAGE ${buildout:directory}/var/blobstorage
+ %include ${buildout:directory}/zeo_add.conf
+
+[instance1]
+recipe = plone.recipe.zope2instance
+zeo-client = true
+#http-address = 8081
+zeo-address = ${zeoserver:zeo-address}
+zodb-cache-size = 5000
+zeo-client-cache-size = 300MB
+shared-blob = on
+zope-conf-additional =
+ %define ZEOADDRESS ${zeoserver:zeo-address}
+ %define ZEOINSTANCE ${buildout:directory}/parts/zeoserver/var
+ %define BLOBSTORAGE ${buildout:directory}/var/blobstorage
+ %include ${buildout:directory}/zope_add_zeo.conf
+
+[instance2]
+<= instance1
+http-address = 8082
+
+[instance3]
+<= instance1
+http-address = 8083
+
+[instance4]
+<= instance1
+http-address = 8084
+
+[debug-instance]
+<= instance1
+http-address = 8080
+debug-mode = on
+verbose-security = on
+
+[logrotate]
+recipe = collective.recipe.template
+input = templates/logrotate.conf
+output = ${buildout:directory}/logrotate.conf
diff --git a/products/EXTERNALS.txt b/products/EXTERNALS.txt
new file mode 100644
index 0000000..7a873dc
--- /dev/null
+++ b/products/EXTERNALS.txt
@@ -0,0 +1,3 @@
+#
+# taken into account by: svn propset svn:externals -F ./EXTERNALS.txt .
+#
diff --git a/products/README.txt b/products/README.txt
new file mode 100644
index 0000000..5a8ccfd
--- /dev/null
+++ b/products/README.txt
@@ -0,0 +1 @@
+Old-style Zope products you are developing can be added here
diff --git a/src/EXTERNALS.txt b/src/EXTERNALS.txt
new file mode 100644
index 0000000..6bda035
--- /dev/null
+++ b/src/EXTERNALS.txt
@@ -0,0 +1,5 @@
+#
+# taken into account by: svn propset svn:externals -F ./EXTERNALS.txt .
+#
+#communesplone.iconified_document_actions http://svn.communesplone.org/svn/communesplone/communesplone.iconified_document_actions/trunk/
+#communesplone.layout http://svn.communesplone.org/svn/communesplone/communesplone.layout/trunk
diff --git a/src/README.txt b/src/README.txt
new file mode 100644
index 0000000..0014180
--- /dev/null
+++ b/src/README.txt
@@ -0,0 +1 @@
+Packages in eggs that you develop should go in this directory
diff --git a/standard-config.cfg b/standard-config.cfg
new file mode 100644
index 0000000..cb4ab64
--- /dev/null
+++ b/standard-config.cfg
@@ -0,0 +1,22 @@
+[buildout]
+extends =
+ buildout.cfg
+
+parts +=
+ standard
+
+[instance1]
+eggs +=
+ collective.recipe.plonesite
+
+[versions]
+collective.recipe.plonesite = 1.8.1
+
+[standard]
+recipe = collective.recipe.plonesite
+site-id = standard
+instance = instance1
+default-language = fr
+profiles-initial = Products.CMFPlone:plone-content
+site-replace = false
+post-extras = standard-config.py
\ No newline at end of file
diff --git a/standard-config.py b/standard-config.py
new file mode 100644
index 0000000..61e8913
--- /dev/null
+++ b/standard-config.py
@@ -0,0 +1,9 @@
+from Products.ExternalMethod.ExternalMethod import manage_addExternalMethod
+# we add the external method cputils_install
+if not hasattr(app, 'cputils_install'):
+ manage_addExternalMethod(app, 'cputils_install', '', 'CPUtils.utils', 'install')
+# we run this method
+app.cputils_install(app)
+# we add the properties hiddenProducts, shownProducts
+#from Products.CPUtils.hiddenProductsList import dic_hpList
+# to be continued
\ No newline at end of file
diff --git a/templates/logrotate.conf b/templates/logrotate.conf
new file mode 100644
index 0000000..5568e93
--- /dev/null
+++ b/templates/logrotate.conf
@@ -0,0 +1,11 @@
+# This file is generated from templates/logrotate.conf.
+# Please do not edit the copy in etc/
+
+${buildout:directory}/var/log/*.log {
+rotate 52
+weekly
+create
+compress
+delaycompress
+notifempty
+}
diff --git a/var/README.txt b/var/README.txt
new file mode 100644
index 0000000..5a2a586
--- /dev/null
+++ b/var/README.txt
@@ -0,0 +1 @@
+This directory contains the Data.fs ZODB data storage, and other runtime files
diff --git a/versions-base.cfg b/versions-base.cfg
new file mode 100644
index 0000000..7062ea6
--- /dev/null
+++ b/versions-base.cfg
@@ -0,0 +1,55 @@
+[versions]
+Pillow = 1.7.8
+Products.AdvancedQuery = 3.0.3
+Products.DocFinderTab = 1.0.5
+Products.PloneFormGen = 1.7.6
+Products.PloneHotfix20121106 = 1.2
+Products.PythonField = 1.1.3
+Products.TALESField = 1.1.3
+Products.TemplateFields = 1.2.5
+Products.csvreplicata = 1.1.11
+beyondskins.responsive = 0.4
+collective.MockMailHost = 0.5
+collective.ckeditor = 3.6.8
+collective.easyslider = 1.1.1
+collective.pfg.norobots = 1.0
+collective.plonetruegallery = 3.2a1
+collective.ptg.highslide = 1.1.1
+collective.quickupload = 1.5.7
+infrae.subversion = 1.4.5
+plone.app.multilingual = 1.0b3
+plone.multilingualbehavior = 1.0b3
+plone.recipe.distros = 1.5
+
+#Required by:
+#Products.PloneFormGen 1.7.6
+collective.js.jqueryui = 1.9.2.0
+
+#Required by:
+#collective.ckeditor 3.6.8
+collective.plonefinder = 1.0.2
+
+#Required by:
+#collective.pfg.norobots 1.0
+collective.z3cform.norobots = 1.4.2
+
+#Required by:
+#collective.plonetruegallery 3.2a1
+collective.ptg.galleria = 1.2.1
+
+#Required by:
+#collective.ckeditor 3.6.8
+demjson = 1.6
+
+#Required by:
+#collective.captcha 1.7
+skimpyGimpy = 1.4
+
+#Required by:
+#plone.app.multilingual 1.0b3
+archetypes.multilingual = 1.0b3
+
+#Required by:
+#plone.app.multilingual 1.0b3
+#plone.multilingualbehavior 1.0b3
+plone.multilingual = 1.0b3
diff --git a/versions-dev.cfg b/versions-dev.cfg
new file mode 100644
index 0000000..0054594
--- /dev/null
+++ b/versions-dev.cfg
@@ -0,0 +1,8 @@
+[versions]
+Products.Clouseau = 1.0
+#Products.PDBDebugMode = 1.3.1
+Products.PrintingMailHost = 0.7
+archetypes.schematuning = 1.2
+ipdb = 0.7
+ipython = 0.13.1
+iw.debug = 0.3
diff --git a/zeo_add.conf b/zeo_add.conf
new file mode 100644
index 0000000..38a1e47
--- /dev/null
+++ b/zeo_add.conf
@@ -0,0 +1,7 @@
+# Define each mount point fs as the following block
+# Change the file named 'zope_add_zeo.conf' too
+
+
+ path $FILESTORAGE/xxx.fs
+ blob-dir $BLOBSTORAGE-xxx
+
diff --git a/zope_add.conf b/zope_add.conf
new file mode 100644
index 0000000..bb3bfb0
--- /dev/null
+++ b/zope_add.conf
@@ -0,0 +1,9 @@
+# Define each mount point as the following block
+
+
+
+ path $FILESTORAGE/xxx.fs
+ blob-dir $BLOBSTORAGE-xxx
+
+ mount-point /xxx
+
diff --git a/zope_add_zeo.conf b/zope_add_zeo.conf
new file mode 100644
index 0000000..214c38c
--- /dev/null
+++ b/zope_add_zeo.conf
@@ -0,0 +1,16 @@
+# Define each mount point as the following block
+# Change the file named 'zeo_add.conf' too
+# 13 lines to copy
+
+
+
+ blob-dir $BLOBSTORAGE-xxx
+ shared-blob-dir on
+ server $ZEOADDRESS
+ storage xxx
+ name xxx_zeostorage
+ var $ZEOINSTANCE/var
+ cache-size 300MB
+
+ mount-point /xxx
+