From a62aa2e4c95662f5b9f5a999aa2a5d1e295c54f9 Mon Sep 17 00:00:00 2001
From: Jean-Paul Smets <jp@nexedi.com>
Date: Sun, 8 Feb 2004 17:55:42 +0000
Subject: [PATCH] fixed Solanes typo

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@430 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/Base18/Base18.py                      |  2 +-
 product/Base18/CookieCrumbler.py              |  2 +-
 product/Base18/Document.py                    |  2 +-
 product/Base18/Extensions/MigrateContent.py   |  2 +-
 product/Base18/Folder.py                      |  2 +-
 product/Base18/MembershipTool.py              |  2 +-
 product/Base18/NewsItem.py                    |  2 +-
 product/Base18/Replica.py                     |  2 +-
 product/Base18/Translation.py                 |  2 +-
 product/Base18/TranslationTool.py             |  2 +-
 product/Base18/Wiki.py                        |  2 +-
 product/Base18/__init__.py                    |  2 +-
 product/Base18/interfaces/Translatable.py     |  2 +-
 product/Base18/interfaces/__init__.py         |  2 +-
 .../Base18/skins/content18/TranslatedBody.py  |  2 +-
 .../skins/content18/TranslatedDescription.py  |  2 +-
 .../Base18/skins/content18/TranslatedTitle.py |  2 +-
 .../skins/content18/TranslatedTitle_or_id.py  |  2 +-
 .../skins/content18/translation_edit.py       |  2 +-
 .../content18/translation_status_modify.py    |  2 +-
 .../Base18/skins/nexedi/combined_subjects.py  |  2 +-
 .../Base18/skins/nexedi/public_subtopics.py   |  2 +-
 product/Base18/utils.py                       |  2 +-
 product/CMFActivity/ActiveProcess.py          |  2 +-
 product/CMFActivity/ActivityTool.py           |  4 +-
 product/CMFActivity/__init__.py               |  2 +-
 product/CMFCategory/Category.py               |  2 +-
 product/CMFCategory/CategoryTool.py           |  2 +-
 product/CMFCategory/PropertySheet/.cvsignore  |  1 +
 .../CMFCategory/PropertySheet/BaseCategory.py |  2 +-
 .../CMFCategory/PropertySheet/CategoryCore.py |  2 +-
 product/CMFCategory/PropertySheet/__init__.py |  4 +-
 product/CMFCategory/__init__.py               |  2 +-
 product/Coramy/__init__.py                    |  2 +-
 product/ERP5/ERP5Globals.py                   |  3 +-
 product/ERP5/Interface/Coordinate.py          |  2 +-
 product/ERP5/Interface/Entity.py              |  2 +-
 product/ERP5/Interface/Predicate.py           |  2 +-
 product/ERP5/NotUsed.py                       |  2 +-
 product/ERP5/PropertySheet/Account.py         |  2 +-
 product/ERP5/PropertySheet/AppliedRule.py     |  2 +-
 product/ERP5/PropertySheet/BankAccount.py     |  2 +-
 .../ERP5/PropertySheet/BusinessTemplate.py    |  2 +-
 product/ERP5/PropertySheet/Container.py       |  2 +-
 product/ERP5/PropertySheet/CopyrightTax.py    |  2 +-
 product/ERP5/PropertySheet/Delivery.py        |  2 +-
 product/ERP5/PropertySheet/Document.py        |  2 +-
 product/ERP5/PropertySheet/Domain.py          |  2 +-
 product/ERP5/PropertySheet/EcoTax.py          |  2 +-
 product/ERP5/PropertySheet/FlowCapacity.py    |  2 +-
 .../ERP5/PropertySheet/GeographicAddress.py   |  2 +-
 product/ERP5/PropertySheet/Inventory.py       |  2 +-
 product/ERP5/PropertySheet/InventoryLine.py   |  2 +-
 product/ERP5/PropertySheet/Item.py            |  2 +-
 product/ERP5/PropertySheet/ItemAggregation.py |  2 +-
 product/ERP5/PropertySheet/MailMessage.py     |  2 +-
 product/ERP5/PropertySheet/MappedValue.py     |  2 +-
 product/ERP5/PropertySheet/Movement.py        |  2 +-
 product/ERP5/PropertySheet/Organisation.py    |  2 +-
 product/ERP5/PropertySheet/Path.py            |  2 +-
 product/ERP5/PropertySheet/PaySheet.py        |  2 +-
 product/ERP5/PropertySheet/Person.py          |  2 +-
 product/ERP5/PropertySheet/Predicate.py       |  2 +-
 product/ERP5/PropertySheet/Price.py           |  2 +-
 product/ERP5/PropertySheet/Reference.py       |  2 +-
 product/ERP5/PropertySheet/Resource.py        |  2 +-
 product/ERP5/PropertySheet/SaleOpportunity.py |  2 +-
 product/ERP5/PropertySheet/Simulation.py      |  2 +-
 product/ERP5/PropertySheet/StockCapacity.py   |  2 +-
 product/ERP5/PropertySheet/Telephone.py       |  2 +-
 product/ERP5/PropertySheet/Transformation.py  |  2 +-
 product/ERP5/PropertySheet/Url.py             |  2 +-
 product/ERP5/PropertySheet/VariationRange.py  |  2 +-
 product/ERP5/Tool/ActivityTool.py             |  2 +-
 product/ERP5/Tool/Category.py                 |  2 +-
 product/ERP5/Tool/CategoryTool.py             |  2 +-
 product/ERP5/Tool/InterpolationTool.py        |  2 +-
 product/ERP5/Tool/RuleTool.py                 |  2 +-
 product/ERP5/Tool/TemplateTool.py             |  2 +-
 product/ERP5/Variated.py                      |  2 +-
 product/ERP5/VariationValue.py                |  2 +-
 product/ERP5/__init__.py                      |  2 +-
 product/ERP5Catalog/CatalogTool.py            | 89 +++++++++++++++++-
 product/ERP5Catalog/__init__.py               |  2 +-
 product/ERP5Form/Form.py                      |  2 +-
 product/ERP5Form/ImageField.py                |  2 +-
 product/ERP5Form/ListBox.py                   |  2 +-
 product/ERP5Form/MatrixBox.py                 |  2 +-
 product/ERP5Form/MultiRelationField.py        |  2 +-
 product/ERP5Form/PDFTemplate.py               |  2 +-
 product/ERP5Form/RelationField.py             |  2 +-
 product/ERP5Form/Selection.py                 |  3 +-
 product/ERP5Form/SelectionTool.py             |  2 +-
 product/ERP5Form/__init__.py                  |  2 +-
 product/ERP5Shop/Document/ShopOrder.py        |  2 +-
 product/ERP5Shop/Document/ShopProduct.py      |  4 +-
 product/ERP5Shop/Document/ShoppingCart.py     |  2 +-
 product/ERP5Shop/Interface/ShopOrder.py       |  2 +-
 product/ERP5Shop/Interface/ShopProduct.py     |  2 +-
 product/ERP5Shop/Interface/ShoppingCart.py    |  2 +-
 product/ERP5Shop/PropertySheet/ShopOrder.py   |  2 +-
 product/ERP5Shop/PropertySheet/ShopProduct.py |  2 +-
 product/ERP5Shop/__init__.py                  |  2 +-
 product/ERP5SyncML/__init__.py                |  2 +-
 product/ERP5Type/Context.py                   |  2 +-
 product/ERP5Type/Document/Folder.py           |  6 +-
 product/ERP5Type/ERP5Type.py                  |  2 +-
 product/ERP5Type/Permissions.py               |  7 +-
 product/ERP5Type/PropertySheet/Base.py        |  2 +-
 product/ERP5Type/PropertySheet/DublinCore.py  |  2 +-
 product/ERP5Type/PropertySheet/Folder.py      |  2 +-
 product/ERP5Type/PropertySheet/SimpleItem.py  |  2 +-
 product/ERP5Type/PropertySheet/XMLObject.py   |  2 +-
 product/ERP5Type/Tool/ClassTool.py            |  2 +-
 product/ERP5Type/Utils.py                     |  4 +-
 product/ERP5Type/Utils2.py                    |  2 +-
 product/ERP5Type/XMLMatrix.py                 |  2 +-
 product/ERP5Type/XMLObject.py                 |  2 +-
 product/ERP5Type/ZopePatch.py                 |  2 +-
 product/ERP5Type/__init__.py                  |  2 +-
 product/Nexedi/Document/NetworkProduct.py     |  2 +-
 .../Nexedi/Document/NexediServicePricing.py   |  4 +-
 product/Nexedi/Document/WPNNode.py            |  4 +-
 .../Nexedi/PropertySheet/NetworkProduct.py    |  2 +-
 product/Nexedi/PropertySheet/WPNNode.py       |  2 +-
 product/ZSQLCatalog/SQLCatalog.py             | 67 +++++++++++--
 product/ZSQLCatalog/ZSQLCatalog.py            | 93 ++++++++++++++-----
 127 files changed, 353 insertions(+), 166 deletions(-)

diff --git a/product/Base18/Base18.py b/product/Base18/Base18.py
index 5b60907ec5..72e3ae15a1 100755
--- a/product/Base18/Base18.py
+++ b/product/Base18/Base18.py
@@ -4,7 +4,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/CookieCrumbler.py b/product/Base18/CookieCrumbler.py
index e35a104985..02d21b5152 100755
--- a/product/Base18/CookieCrumbler.py
+++ b/product/Base18/CookieCrumbler.py
@@ -5,7 +5,7 @@
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/Document.py b/product/Base18/Document.py
index 9695a04f63..7aa8b4beb7 100755
--- a/product/Base18/Document.py
+++ b/product/Base18/Document.py
@@ -4,7 +4,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/Extensions/MigrateContent.py b/product/Base18/Extensions/MigrateContent.py
index e449f24a04..dce511468b 100755
--- a/product/Base18/Extensions/MigrateContent.py
+++ b/product/Base18/Extensions/MigrateContent.py
@@ -5,7 +5,7 @@
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/Folder.py b/product/Base18/Folder.py
index 5a2f37caa3..178a2d188e 100755
--- a/product/Base18/Folder.py
+++ b/product/Base18/Folder.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/MembershipTool.py b/product/Base18/MembershipTool.py
index bab3761330..15b3d1da8b 100755
--- a/product/Base18/MembershipTool.py
+++ b/product/Base18/MembershipTool.py
@@ -5,7 +5,7 @@
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/NewsItem.py b/product/Base18/NewsItem.py
index 12dd0f5c7c..283e3f29f7 100755
--- a/product/Base18/NewsItem.py
+++ b/product/Base18/NewsItem.py
@@ -4,7 +4,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/Replica.py b/product/Base18/Replica.py
index 0c225da798..6c38035eda 100755
--- a/product/Base18/Replica.py
+++ b/product/Base18/Replica.py
@@ -5,7 +5,7 @@
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/Translation.py b/product/Base18/Translation.py
index 3a3bf2bdb1..74be66f025 100755
--- a/product/Base18/Translation.py
+++ b/product/Base18/Translation.py
@@ -4,7 +4,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential 
diff --git a/product/Base18/TranslationTool.py b/product/Base18/TranslationTool.py
index 5b2d0a6a7a..8561c63ebe 100755
--- a/product/Base18/TranslationTool.py
+++ b/product/Base18/TranslationTool.py
@@ -4,7 +4,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional 
 # programmers who take the whole responsability of assessing all potential 
diff --git a/product/Base18/Wiki.py b/product/Base18/Wiki.py
index 5182d08143..05d0845bc8 100755
--- a/product/Base18/Wiki.py
+++ b/product/Base18/Wiki.py
@@ -4,7 +4,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/__init__.py b/product/Base18/__init__.py
index beceb29ef3..1d305e9b74 100755
--- a/product/Base18/__init__.py
+++ b/product/Base18/__init__.py
@@ -4,7 +4,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential 
diff --git a/product/Base18/interfaces/Translatable.py b/product/Base18/interfaces/Translatable.py
index 886bceb797..d25f0ac42d 100755
--- a/product/Base18/interfaces/Translatable.py
+++ b/product/Base18/interfaces/Translatable.py
@@ -4,7 +4,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/interfaces/__init__.py b/product/Base18/interfaces/__init__.py
index a6580822bd..969a005c8c 100755
--- a/product/Base18/interfaces/__init__.py
+++ b/product/Base18/interfaces/__init__.py
@@ -4,7 +4,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional 
 # programmers who take the whole responsability of assessing all potential 
diff --git a/product/Base18/skins/content18/TranslatedBody.py b/product/Base18/skins/content18/TranslatedBody.py
index 478df99040..d78311dba1 100755
--- a/product/Base18/skins/content18/TranslatedBody.py
+++ b/product/Base18/skins/content18/TranslatedBody.py
@@ -13,7 +13,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/skins/content18/TranslatedDescription.py b/product/Base18/skins/content18/TranslatedDescription.py
index 58a3def36a..2b9875f3a9 100755
--- a/product/Base18/skins/content18/TranslatedDescription.py
+++ b/product/Base18/skins/content18/TranslatedDescription.py
@@ -13,7 +13,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/skins/content18/TranslatedTitle.py b/product/Base18/skins/content18/TranslatedTitle.py
index 4456c9eb4b..f6b2df7c04 100755
--- a/product/Base18/skins/content18/TranslatedTitle.py
+++ b/product/Base18/skins/content18/TranslatedTitle.py
@@ -13,7 +13,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/skins/content18/TranslatedTitle_or_id.py b/product/Base18/skins/content18/TranslatedTitle_or_id.py
index c91d0d37f1..09343d3637 100755
--- a/product/Base18/skins/content18/TranslatedTitle_or_id.py
+++ b/product/Base18/skins/content18/TranslatedTitle_or_id.py
@@ -13,7 +13,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/skins/content18/translation_edit.py b/product/Base18/skins/content18/translation_edit.py
index 78c17eac5d..dbc01b93dd 100755
--- a/product/Base18/skins/content18/translation_edit.py
+++ b/product/Base18/skins/content18/translation_edit.py
@@ -13,7 +13,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/skins/content18/translation_status_modify.py b/product/Base18/skins/content18/translation_status_modify.py
index 3b88852f80..030213fc9f 100755
--- a/product/Base18/skins/content18/translation_status_modify.py
+++ b/product/Base18/skins/content18/translation_status_modify.py
@@ -13,7 +13,7 @@
 #         documents.
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Base18/skins/nexedi/combined_subjects.py b/product/Base18/skins/nexedi/combined_subjects.py
index 75da619771..d59bb492fd 100755
--- a/product/Base18/skins/nexedi/combined_subjects.py
+++ b/product/Base18/skins/nexedi/combined_subjects.py
@@ -10,7 +10,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # This program is Free Software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
diff --git a/product/Base18/skins/nexedi/public_subtopics.py b/product/Base18/skins/nexedi/public_subtopics.py
index 91d3aae01c..7371247240 100755
--- a/product/Base18/skins/nexedi/public_subtopics.py
+++ b/product/Base18/skins/nexedi/public_subtopics.py
@@ -2,7 +2,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # This program is Free Software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
diff --git a/product/Base18/utils.py b/product/Base18/utils.py
index cc8c143645..8ca76199fb 100755
--- a/product/Base18/utils.py
+++ b/product/Base18/utils.py
@@ -5,7 +5,7 @@
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/CMFActivity/ActiveProcess.py b/product/CMFActivity/ActiveProcess.py
index 6f140ed3cb..0a5a206a1b 100755
--- a/product/CMFActivity/ActiveProcess.py
+++ b/product/CMFActivity/ActiveProcess.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/CMFActivity/ActivityTool.py b/product/CMFActivity/ActivityTool.py
index acac4655b4..6a18e69d3f 100755
--- a/product/CMFActivity/ActivityTool.py
+++ b/product/CMFActivity/ActivityTool.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
@@ -82,6 +82,8 @@ class Message:
       LOG('WARNING ActivityTool', 0,
            'Trying to call method %s on object %s' % (self.method_id, self.object_path))
       object = activity_tool.unrestrictedTraverse(self.object_path)
+      # Change user if required (TO BE DONE)
+      # self.activity_kw
       REQUEST = get_request()
       REQUEST.active_process = self.active_process
       result = getattr(object, self.method_id)(*self.args, **self.kw)
diff --git a/product/CMFActivity/__init__.py b/product/CMFActivity/__init__.py
index 04dcfb730a..a5caf61c15 100755
--- a/product/CMFActivity/__init__.py
+++ b/product/CMFActivity/__init__.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/CMFCategory/Category.py b/product/CMFCategory/Category.py
index cb0d52ada5..18444d9e1d 100755
--- a/product/CMFCategory/Category.py
+++ b/product/CMFCategory/Category.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/CMFCategory/CategoryTool.py b/product/CMFCategory/CategoryTool.py
index 191af0b619..28ada5142e 100755
--- a/product/CMFCategory/CategoryTool.py
+++ b/product/CMFCategory/CategoryTool.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/CMFCategory/PropertySheet/.cvsignore b/product/CMFCategory/PropertySheet/.cvsignore
index d0743b7da6..654a6adb18 100755
--- a/product/CMFCategory/PropertySheet/.cvsignore
+++ b/product/CMFCategory/PropertySheet/.cvsignore
@@ -1,2 +1,3 @@
+__init__.py
 .AppleDouble
 *.pyc
diff --git a/product/CMFCategory/PropertySheet/BaseCategory.py b/product/CMFCategory/PropertySheet/BaseCategory.py
index 23ffd15c55..6a540ea149 100755
--- a/product/CMFCategory/PropertySheet/BaseCategory.py
+++ b/product/CMFCategory/PropertySheet/BaseCategory.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/CMFCategory/PropertySheet/CategoryCore.py b/product/CMFCategory/PropertySheet/CategoryCore.py
index 3e942186ec..2512bb0290 100755
--- a/product/CMFCategory/PropertySheet/CategoryCore.py
+++ b/product/CMFCategory/PropertySheet/CategoryCore.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/CMFCategory/PropertySheet/__init__.py b/product/CMFCategory/PropertySheet/__init__.py
index 61199b6b34..6653b5cedf 100755
--- a/product/CMFCategory/PropertySheet/__init__.py
+++ b/product/CMFCategory/PropertySheet/__init__.py
@@ -1,2 +1,2 @@
-from BaseCategory import BaseCategory
-from CategoryCore import CategoryCore
\ No newline at end of file
+from CategoryCore import CategoryCore
+from BaseCategory import BaseCategory
\ No newline at end of file
diff --git a/product/CMFCategory/__init__.py b/product/CMFCategory/__init__.py
index 999693f57b..9d4b78e36d 100755
--- a/product/CMFCategory/__init__.py
+++ b/product/CMFCategory/__init__.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Coramy/__init__.py b/product/Coramy/__init__.py
index 143f3657f8..69b951edb4 100755
--- a/product/Coramy/__init__.py
+++ b/product/Coramy/__init__.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/ERP5Globals.py b/product/ERP5/ERP5Globals.py
index 914ea29bbf..5039336632 100755
--- a/product/ERP5/ERP5Globals.py
+++ b/product/ERP5/ERP5Globals.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
@@ -164,3 +164,4 @@ future_inventory_state_list = ('planned', 'ordered',)
 column_base_category_list = ('taille', )
 line_base_category_list = ('coloris', 'couleur', )
 tab_base_category_list = ('morphologie', )
+
diff --git a/product/ERP5/Interface/Coordinate.py b/product/ERP5/Interface/Coordinate.py
index 41693f0a09..2c35916b9a 100755
--- a/product/ERP5/Interface/Coordinate.py
+++ b/product/ERP5/Interface/Coordinate.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/Interface/Entity.py b/product/ERP5/Interface/Entity.py
index 71f1932f1f..37861adc04 100755
--- a/product/ERP5/Interface/Entity.py
+++ b/product/ERP5/Interface/Entity.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/Interface/Predicate.py b/product/ERP5/Interface/Predicate.py
index 965dae18c8..fe2fd702a5 100755
--- a/product/ERP5/Interface/Predicate.py
+++ b/product/ERP5/Interface/Predicate.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/NotUsed.py b/product/ERP5/NotUsed.py
index d838cb1005..bc9ffd00f3 100755
--- a/product/ERP5/NotUsed.py
+++ b/product/ERP5/NotUsed.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #                    Sebastien Robin <seb@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
diff --git a/product/ERP5/PropertySheet/Account.py b/product/ERP5/PropertySheet/Account.py
index b60cdf5089..47bc6d764a 100755
--- a/product/ERP5/PropertySheet/Account.py
+++ b/product/ERP5/PropertySheet/Account.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#          Jean-Paul Smets-Solane <jp@nexedi.com>
+#          Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/AppliedRule.py b/product/ERP5/PropertySheet/AppliedRule.py
index befa89340f..3ecbc831a7 100755
--- a/product/ERP5/PropertySheet/AppliedRule.py
+++ b/product/ERP5/PropertySheet/AppliedRule.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/BankAccount.py b/product/ERP5/PropertySheet/BankAccount.py
index 18a18201d9..7d2574f5fa 100755
--- a/product/ERP5/PropertySheet/BankAccount.py
+++ b/product/ERP5/PropertySheet/BankAccount.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/BusinessTemplate.py b/product/ERP5/PropertySheet/BusinessTemplate.py
index 15b9f6641c..a9885a845a 100755
--- a/product/ERP5/PropertySheet/BusinessTemplate.py
+++ b/product/ERP5/PropertySheet/BusinessTemplate.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#          Jean-Paul Smets-Solane <jp@nexedi.com>
+#          Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Container.py b/product/ERP5/PropertySheet/Container.py
index eb0406799f..d3e58714ae 100755
--- a/product/ERP5/PropertySheet/Container.py
+++ b/product/ERP5/PropertySheet/Container.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/CopyrightTax.py b/product/ERP5/PropertySheet/CopyrightTax.py
index 071903fe8b..097f8d83bb 100755
--- a/product/ERP5/PropertySheet/CopyrightTax.py
+++ b/product/ERP5/PropertySheet/CopyrightTax.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Delivery.py b/product/ERP5/PropertySheet/Delivery.py
index 29601c9856..2734d6cfcd 100755
--- a/product/ERP5/PropertySheet/Delivery.py
+++ b/product/ERP5/PropertySheet/Delivery.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Document.py b/product/ERP5/PropertySheet/Document.py
index c7b6fd75ad..345ff12e89 100755
--- a/product/ERP5/PropertySheet/Document.py
+++ b/product/ERP5/PropertySheet/Document.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Domain.py b/product/ERP5/PropertySheet/Domain.py
index 150122f4cb..d929094e1b 100755
--- a/product/ERP5/PropertySheet/Domain.py
+++ b/product/ERP5/PropertySheet/Domain.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/EcoTax.py b/product/ERP5/PropertySheet/EcoTax.py
index eeedeb185f..471e7c8103 100755
--- a/product/ERP5/PropertySheet/EcoTax.py
+++ b/product/ERP5/PropertySheet/EcoTax.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/FlowCapacity.py b/product/ERP5/PropertySheet/FlowCapacity.py
index 80508266c4..319835b0cf 100755
--- a/product/ERP5/PropertySheet/FlowCapacity.py
+++ b/product/ERP5/PropertySheet/FlowCapacity.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/GeographicAddress.py b/product/ERP5/PropertySheet/GeographicAddress.py
index dcfddc8567..faa2f46784 100755
--- a/product/ERP5/PropertySheet/GeographicAddress.py
+++ b/product/ERP5/PropertySheet/GeographicAddress.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Inventory.py b/product/ERP5/PropertySheet/Inventory.py
index 8dba83135d..c9e251f984 100755
--- a/product/ERP5/PropertySheet/Inventory.py
+++ b/product/ERP5/PropertySheet/Inventory.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/InventoryLine.py b/product/ERP5/PropertySheet/InventoryLine.py
index 0e8949ad68..f3e32ebe98 100755
--- a/product/ERP5/PropertySheet/InventoryLine.py
+++ b/product/ERP5/PropertySheet/InventoryLine.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Item.py b/product/ERP5/PropertySheet/Item.py
index 5ce8cd0931..d6d9143123 100755
--- a/product/ERP5/PropertySheet/Item.py
+++ b/product/ERP5/PropertySheet/Item.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/ItemAggregation.py b/product/ERP5/PropertySheet/ItemAggregation.py
index e637e245c8..671c21417e 100755
--- a/product/ERP5/PropertySheet/ItemAggregation.py
+++ b/product/ERP5/PropertySheet/ItemAggregation.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/MailMessage.py b/product/ERP5/PropertySheet/MailMessage.py
index d773bf1462..16a22c2a54 100755
--- a/product/ERP5/PropertySheet/MailMessage.py
+++ b/product/ERP5/PropertySheet/MailMessage.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/MappedValue.py b/product/ERP5/PropertySheet/MappedValue.py
index a46252fadc..2564c5348b 100755
--- a/product/ERP5/PropertySheet/MappedValue.py
+++ b/product/ERP5/PropertySheet/MappedValue.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Movement.py b/product/ERP5/PropertySheet/Movement.py
index f173c134b7..64b63931f6 100755
--- a/product/ERP5/PropertySheet/Movement.py
+++ b/product/ERP5/PropertySheet/Movement.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Organisation.py b/product/ERP5/PropertySheet/Organisation.py
index 04d27697da..ad7a4e1cfe 100755
--- a/product/ERP5/PropertySheet/Organisation.py
+++ b/product/ERP5/PropertySheet/Organisation.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#          Jean-Paul Smets-Solane <jp@nexedi.com>
+#          Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Path.py b/product/ERP5/PropertySheet/Path.py
index c29d3152ac..7cfe9c504d 100755
--- a/product/ERP5/PropertySheet/Path.py
+++ b/product/ERP5/PropertySheet/Path.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/PaySheet.py b/product/ERP5/PropertySheet/PaySheet.py
index c2e3fddb8f..4691028e28 100755
--- a/product/ERP5/PropertySheet/PaySheet.py
+++ b/product/ERP5/PropertySheet/PaySheet.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Person.py b/product/ERP5/PropertySheet/Person.py
index eb09aab72b..67585b5fac 100755
--- a/product/ERP5/PropertySheet/Person.py
+++ b/product/ERP5/PropertySheet/Person.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Predicate.py b/product/ERP5/PropertySheet/Predicate.py
index e2198fc754..cc3a4c5d1b 100755
--- a/product/ERP5/PropertySheet/Predicate.py
+++ b/product/ERP5/PropertySheet/Predicate.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Price.py b/product/ERP5/PropertySheet/Price.py
index 8be9c5eb53..bb798a1a64 100755
--- a/product/ERP5/PropertySheet/Price.py
+++ b/product/ERP5/PropertySheet/Price.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Reference.py b/product/ERP5/PropertySheet/Reference.py
index 77e3efbdf7..a90aa2a500 100755
--- a/product/ERP5/PropertySheet/Reference.py
+++ b/product/ERP5/PropertySheet/Reference.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Resource.py b/product/ERP5/PropertySheet/Resource.py
index 470b9f3e7f..7cf73d48a9 100755
--- a/product/ERP5/PropertySheet/Resource.py
+++ b/product/ERP5/PropertySheet/Resource.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/SaleOpportunity.py b/product/ERP5/PropertySheet/SaleOpportunity.py
index a15a497b22..5b09761270 100755
--- a/product/ERP5/PropertySheet/SaleOpportunity.py
+++ b/product/ERP5/PropertySheet/SaleOpportunity.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#          Jean-Paul Smets-Solane <jp@nexedi.com>
+#          Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Simulation.py b/product/ERP5/PropertySheet/Simulation.py
index f9926fbe42..b1886cceb6 100755
--- a/product/ERP5/PropertySheet/Simulation.py
+++ b/product/ERP5/PropertySheet/Simulation.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/StockCapacity.py b/product/ERP5/PropertySheet/StockCapacity.py
index 02906267ab..a56d4507a2 100755
--- a/product/ERP5/PropertySheet/StockCapacity.py
+++ b/product/ERP5/PropertySheet/StockCapacity.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Telephone.py b/product/ERP5/PropertySheet/Telephone.py
index 4b76c1e960..25c7838b13 100755
--- a/product/ERP5/PropertySheet/Telephone.py
+++ b/product/ERP5/PropertySheet/Telephone.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Transformation.py b/product/ERP5/PropertySheet/Transformation.py
index e957663007..6edb6564f4 100755
--- a/product/ERP5/PropertySheet/Transformation.py
+++ b/product/ERP5/PropertySheet/Transformation.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/Url.py b/product/ERP5/PropertySheet/Url.py
index 74c7df295d..9209fd512d 100755
--- a/product/ERP5/PropertySheet/Url.py
+++ b/product/ERP5/PropertySheet/Url.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/PropertySheet/VariationRange.py b/product/ERP5/PropertySheet/VariationRange.py
index 3759e250fd..3f81a57563 100755
--- a/product/ERP5/PropertySheet/VariationRange.py
+++ b/product/ERP5/PropertySheet/VariationRange.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/Tool/ActivityTool.py b/product/ERP5/Tool/ActivityTool.py
index 348fba4d4d..48ceef35e2 100755
--- a/product/ERP5/Tool/ActivityTool.py
+++ b/product/ERP5/Tool/ActivityTool.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/Tool/Category.py b/product/ERP5/Tool/Category.py
index 859cc4fc1f..8f29f2e1ac 100755
--- a/product/ERP5/Tool/Category.py
+++ b/product/ERP5/Tool/Category.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/Tool/CategoryTool.py b/product/ERP5/Tool/CategoryTool.py
index 76b4043381..a98bbe6799 100755
--- a/product/ERP5/Tool/CategoryTool.py
+++ b/product/ERP5/Tool/CategoryTool.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/Tool/InterpolationTool.py b/product/ERP5/Tool/InterpolationTool.py
index 27791d11a8..d14949938c 100755
--- a/product/ERP5/Tool/InterpolationTool.py
+++ b/product/ERP5/Tool/InterpolationTool.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/Tool/RuleTool.py b/product/ERP5/Tool/RuleTool.py
index aa443b829e..a30f2c8e57 100755
--- a/product/ERP5/Tool/RuleTool.py
+++ b/product/ERP5/Tool/RuleTool.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/Tool/TemplateTool.py b/product/ERP5/Tool/TemplateTool.py
index 6a940e9347..85a40b5e3a 100755
--- a/product/ERP5/Tool/TemplateTool.py
+++ b/product/ERP5/Tool/TemplateTool.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/Variated.py b/product/ERP5/Variated.py
index bbce70889c..3a50b80be7 100755
--- a/product/ERP5/Variated.py
+++ b/product/ERP5/Variated.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/VariationValue.py b/product/ERP5/VariationValue.py
index 0348c580dd..a7fed094bb 100755
--- a/product/ERP5/VariationValue.py
+++ b/product/ERP5/VariationValue.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5/__init__.py b/product/ERP5/__init__.py
index f72757d764..f48063559d 100755
--- a/product/ERP5/__init__.py
+++ b/product/ERP5/__init__.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Catalog/CatalogTool.py b/product/ERP5Catalog/CatalogTool.py
index 033546d781..3567a629c4 100755
--- a/product/ERP5Catalog/CatalogTool.py
+++ b/product/ERP5Catalog/CatalogTool.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
@@ -85,6 +85,7 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool):
 
     manage_options = ( { 'label' : 'Overview', 'action' : 'manage_overview' },
                        { 'label' : 'Filter', 'action' : 'manage_filter' },
+                       { 'label' : 'Schema', 'action' : 'manage_schema' },
                      ) + ZCatalog.manage_options
 
 
@@ -100,6 +101,78 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool):
                 , 'manage_filter' )
     manage_filter = DTMLFile( 'dtml/manageFilter', globals() )
 
+    security.declareProtected( CMFCorePermissions.ManagePortal
+                , 'manage_schema' )
+    manage_schema = DTMLFile( 'dtml/manageSchema', globals() )
+
+
+    # Schema Management
+    def editColumn(self, column_id, sql_definition, method_id, default_value, REQUEST=None, RESPONSE=None):
+      """
+        Modifies a schema column of the catalog
+      """
+      new_schema = []
+      for c in self.getIndexList():
+        if c.id == index_id:
+          new_c = {'id': index_id, 'sql_definition': sql_definition, 'method_id': method_id, 'default_value': default_value}
+        else:
+          new_c = c
+        new_schema.append(new_c)
+      self.setColumnList(new_schema)
+
+    def setColumnList(self, column_list):
+      """
+      """
+      self._sql_schema = column_list
+
+    def getColumnList(self):
+      """
+      """
+      if not hasattr(self, '_sql_schema'): self._sql_schema = []
+      return self._sql_schema
+
+    def getColumn(self, column_id):
+      """
+      """
+      for c in self.getColumnList():
+        if c.id == column_id:
+          return c
+      return None
+
+    def editIndex(self, index_id, sql_definition, REQUEST=None, RESPONSE=None):
+      """
+        Modifies the schema of the catalog
+      """
+      new_index = []
+      for c in self.getIndexList():
+        if c.id == index_id:
+          new_c = {'id': index_id, 'sql_definition': sql_definition}
+        else:
+          new_c = c
+        new_index.append(new_c)
+      self.setIndexList(new_index)
+
+    def setIndexList(self, index_list):
+      """
+      """
+      self._sql_index = index_list
+
+    def getIndexList(self):
+      """
+      """
+      if not hasattr(self, '_sql_index'): self._sql_index = []
+      return self._sql_index
+
+    def getIndex(self, index_id):
+      """
+      """
+      for c in self.getIndexList():
+        if c.id == index_id:
+          return c
+      return None
+
+
+    # Filtering
     def editFilter(self, REQUEST=None, RESPONSE=None):
       """
       This methods allows to set a filter on each zsql method called,
@@ -291,7 +364,7 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool):
 
         return apply(ZCatalog.countResults, (self, REQUEST), kw)
 
-    def catalog_object(self, object, uid, idxs=[]):
+    def catalog_object(self, object, uid, idxs=[], is_object_moved=0):
         wf = getToolByName(self, 'portal_workflow')
         if wf is not None:
             vars = wf.getCatalogVariablesFor(object)
@@ -299,7 +372,7 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool):
             vars = {}
         w = IndexableObjectWrapper(vars, object)
         #try:
-        ZCatalog.catalog_object(self, w, uid, idxs)
+        ZCatalog.catalog_object(self, w, uid, idxs=idxs, is_object_moved=is_object_moved)
         #except:
           # When we import data into Zope
           # the ZSQLCatalog does not work currently
@@ -328,6 +401,16 @@ class CatalogTool (UniqueObject, ZCatalog, CMFCoreCatalogTool):
           url = path
         self.uncatalog_object(url)
 
+    security.declarePrivate('moveObject')
+    def moveObject(self, object, idxs=[]):
+        """
+          Reindex in catalog, taking into account
+          peculiarities of ERP5Catalog / ZSQLCatalog
+
+          Useless ??? XXX
+        """
+        url = self.__url(object)
+        self.catalog_object(object, url, idxs=idxs, is_object_moved=1)
 
 
 InitializeClass(CatalogTool)
diff --git a/product/ERP5Catalog/__init__.py b/product/ERP5Catalog/__init__.py
index 01e574897a..17f097c124 100755
--- a/product/ERP5Catalog/__init__.py
+++ b/product/ERP5Catalog/__init__.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Form/Form.py b/product/ERP5Form/Form.py
index a915719899..231748f652 100755
--- a/product/ERP5Form/Form.py
+++ b/product/ERP5Form/Form.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Form/ImageField.py b/product/ERP5Form/ImageField.py
index 47d818d174..2818961cd4 100755
--- a/product/ERP5Form/ImageField.py
+++ b/product/ERP5Form/ImageField.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Form/ListBox.py b/product/ERP5Form/ListBox.py
index 0f34a1fd56..128bcdc7d9 100755
--- a/product/ERP5Form/ListBox.py
+++ b/product/ERP5Form/ListBox.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Form/MatrixBox.py b/product/ERP5Form/MatrixBox.py
index 9653313080..311316f860 100755
--- a/product/ERP5Form/MatrixBox.py
+++ b/product/ERP5Form/MatrixBox.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Form/MultiRelationField.py b/product/ERP5Form/MultiRelationField.py
index e4f5c722e1..48022c0272 100755
--- a/product/ERP5Form/MultiRelationField.py
+++ b/product/ERP5Form/MultiRelationField.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Form/PDFTemplate.py b/product/ERP5Form/PDFTemplate.py
index b634e8b2e8..50c637ab9d 100755
--- a/product/ERP5Form/PDFTemplate.py
+++ b/product/ERP5Form/PDFTemplate.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Form/RelationField.py b/product/ERP5Form/RelationField.py
index 0c25f9bf73..f6ed9fcb7d 100755
--- a/product/ERP5Form/RelationField.py
+++ b/product/ERP5Form/RelationField.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Form/Selection.py b/product/ERP5Form/Selection.py
index 583917c8c5..94a0afe528 100755
--- a/product/ERP5Form/Selection.py
+++ b/product/ERP5Form/Selection.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
@@ -132,6 +132,7 @@ class Selection(Acquisition.Implicit, Traversable, Persistent):
           else:
             return []
         else:
+          # We sould try to allow more filtering
           return context.portal_catalog(uid = self.selection_uids)
 
     def __getitem__(self, index, REQUEST=None):
diff --git a/product/ERP5Form/SelectionTool.py b/product/ERP5Form/SelectionTool.py
index 62e1350eae..6e33492444 100755
--- a/product/ERP5Form/SelectionTool.py
+++ b/product/ERP5Form/SelectionTool.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Form/__init__.py b/product/ERP5Form/__init__.py
index a5866ebe13..9d9089d8ff 100755
--- a/product/ERP5Form/__init__.py
+++ b/product/ERP5Form/__init__.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Shop/Document/ShopOrder.py b/product/ERP5Shop/Document/ShopOrder.py
index 8af583275c..7214e804c6 100755
--- a/product/ERP5Shop/Document/ShopOrder.py
+++ b/product/ERP5Shop/Document/ShopOrder.py
@@ -96,7 +96,7 @@ class ShopOrder(MMMShopOrder, Order):
     """
     meta_type = 'ERP5 Shop Order'
     portal_type = 'Shop Order'
-    add_permission = Permissions.AddERP5Content
+    add_permission = Permissions.AddPortalContent
     isPortalContent = 1
     isRADContent = 1
 
diff --git a/product/ERP5Shop/Document/ShopProduct.py b/product/ERP5Shop/Document/ShopProduct.py
index 44348b7081..354044fa8a 100755
--- a/product/ERP5Shop/Document/ShopProduct.py
+++ b/product/ERP5Shop/Document/ShopProduct.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
@@ -45,7 +45,7 @@ class ShopProduct(MMMShopProduct, Resource, XMLMatrix):
 
     meta_type = 'ERP5 Shop Product'
     portal_type = 'Shop Product'
-    add_permission = Permissions.AddERP5Content
+    add_permission = Permissions.AddPortalContent
     isPortalContent = 1
     isRADContent = 1
 
diff --git a/product/ERP5Shop/Document/ShoppingCart.py b/product/ERP5Shop/Document/ShoppingCart.py
index 2ddf58d882..d88c497ab0 100755
--- a/product/ERP5Shop/Document/ShoppingCart.py
+++ b/product/ERP5Shop/Document/ShoppingCart.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Shop/Interface/ShopOrder.py b/product/ERP5Shop/Interface/ShopOrder.py
index 54fb9400b3..340c7566c8 100755
--- a/product/ERP5Shop/Interface/ShopOrder.py
+++ b/product/ERP5Shop/Interface/ShopOrder.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Shop/Interface/ShopProduct.py b/product/ERP5Shop/Interface/ShopProduct.py
index f154c8e8d6..805a3aab39 100755
--- a/product/ERP5Shop/Interface/ShopProduct.py
+++ b/product/ERP5Shop/Interface/ShopProduct.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Shop/Interface/ShoppingCart.py b/product/ERP5Shop/Interface/ShoppingCart.py
index 947dbe636b..f72a029e90 100755
--- a/product/ERP5Shop/Interface/ShoppingCart.py
+++ b/product/ERP5Shop/Interface/ShoppingCart.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Shop/PropertySheet/ShopOrder.py b/product/ERP5Shop/PropertySheet/ShopOrder.py
index 971e949548..016825e44e 100755
--- a/product/ERP5Shop/PropertySheet/ShopOrder.py
+++ b/product/ERP5Shop/PropertySheet/ShopOrder.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#          Jean-Paul Smets-Solane <jp@nexedi.com>
+#          Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Shop/PropertySheet/ShopProduct.py b/product/ERP5Shop/PropertySheet/ShopProduct.py
index 0782b59685..baf3a8c848 100755
--- a/product/ERP5Shop/PropertySheet/ShopProduct.py
+++ b/product/ERP5Shop/PropertySheet/ShopProduct.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#          Jean-Paul Smets-Solane <jp@nexedi.com>
+#          Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Shop/__init__.py b/product/ERP5Shop/__init__.py
index b89b6bb62b..f3dc38a37a 100755
--- a/product/ERP5Shop/__init__.py
+++ b/product/ERP5Shop/__init__.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5SyncML/__init__.py b/product/ERP5SyncML/__init__.py
index 5b044ee612..c7c15139c5 100755
--- a/product/ERP5SyncML/__init__.py
+++ b/product/ERP5SyncML/__init__.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Type/Context.py b/product/ERP5Type/Context.py
index 707e8a7423..805a327668 100755
--- a/product/ERP5Type/Context.py
+++ b/product/ERP5Type/Context.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Type/Document/Folder.py b/product/ERP5Type/Document/Folder.py
index 455606109d..734c370e5d 100755
--- a/product/ERP5Type/Document/Folder.py
+++ b/product/ERP5Type/Document/Folder.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#          Jean-Paul Smets-Solane <jp@nexedi.com>
+#          Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
@@ -447,8 +447,8 @@ be a problem)."""
         Applies immediateReindexObject recursively
       """
       # Reindex self
-      self.flushActivity(invoke = 0, method_id='immediateReindexObject')
-      self.flushActivity(invoke = 0, method_id='recursiveImmediateReindexObject')
+      self.flushActivity(invoke = 0, method_id='immediateReindexObject') # This might create a recursive lock
+      self.flushActivity(invoke = 0, method_id='recursiveImmediateReindexObject') # This might create a recursive lock
       if self.isIndexable:
         self.immediateReindexObject()
       # Reindex contents
diff --git a/product/ERP5Type/ERP5Type.py b/product/ERP5Type/ERP5Type.py
index 093ba71807..e22d78ddcf 100755
--- a/product/ERP5Type/ERP5Type.py
+++ b/product/ERP5Type/ERP5Type.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Type/Permissions.py b/product/ERP5Type/Permissions.py
index 01782400f5..6a2b0c98ac 100755
--- a/product/ERP5Type/Permissions.py
+++ b/product/ERP5Type/Permissions.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
@@ -130,6 +130,7 @@ setDefaultRoles(TranslateContent, ('Manager', 'Owner', 'Member'))
 #
 # - using technical types / interfaces (ie. Entity, Coordinate, Predicate, etc.)
 
-AddERP5Content = 'Add ERP5 content'
-setDefaultRoles(AddERP5Content, ('Manager', ))
+#AddERP5Content = 'Add ERP5 content'
+#setDefaultRoles(AddERP5Content, ('Manager', ))
+AddERP5Content = AddPortalContent # Since we put come CPS content in ERP5 documents, there is no rationale in having 2 permissions
 
diff --git a/product/ERP5Type/PropertySheet/Base.py b/product/ERP5Type/PropertySheet/Base.py
index 555ee46309..37f0488d0d 100755
--- a/product/ERP5Type/PropertySheet/Base.py
+++ b/product/ERP5Type/PropertySheet/Base.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Type/PropertySheet/DublinCore.py b/product/ERP5Type/PropertySheet/DublinCore.py
index 1c0ce689e0..7d434f364f 100755
--- a/product/ERP5Type/PropertySheet/DublinCore.py
+++ b/product/ERP5Type/PropertySheet/DublinCore.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Type/PropertySheet/Folder.py b/product/ERP5Type/PropertySheet/Folder.py
index ead811d077..268fb95fc4 100755
--- a/product/ERP5Type/PropertySheet/Folder.py
+++ b/product/ERP5Type/PropertySheet/Folder.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Type/PropertySheet/SimpleItem.py b/product/ERP5Type/PropertySheet/SimpleItem.py
index 32caad316b..d1c0251cd9 100755
--- a/product/ERP5Type/PropertySheet/SimpleItem.py
+++ b/product/ERP5Type/PropertySheet/SimpleItem.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Type/PropertySheet/XMLObject.py b/product/ERP5Type/PropertySheet/XMLObject.py
index b25cfb3281..f72657c1c1 100755
--- a/product/ERP5Type/PropertySheet/XMLObject.py
+++ b/product/ERP5Type/PropertySheet/XMLObject.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Type/Tool/ClassTool.py b/product/ERP5Type/Tool/ClassTool.py
index bde201f0a8..7492835aec 100755
--- a/product/ERP5Type/Tool/ClassTool.py
+++ b/product/ERP5Type/Tool/ClassTool.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Type/Utils.py b/product/ERP5Type/Utils.py
index fbad71f9df..8e4606a3b6 100755
--- a/product/ERP5Type/Utils.py
+++ b/product/ERP5Type/Utils.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
@@ -336,7 +336,7 @@ def importLocalDocument(class_id):
   if not hasattr(document_class, 'isRADContent'):
     document_class.isRADContent = 1
   if not hasattr(document_class, 'add_permission'):
-    document_class.add_permission = Permissions.AddERP5Content
+    document_class.add_permission = Permissions.AddPortalContent
   if not hasattr(document_class, '__implements__'):
     document_class.__implements__ = ()
   initializeDefaultProperties([document_class])
diff --git a/product/ERP5Type/Utils2.py b/product/ERP5Type/Utils2.py
index ea9041d082..056af50227 100755
--- a/product/ERP5Type/Utils2.py
+++ b/product/ERP5Type/Utils2.py
@@ -2,7 +2,7 @@
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#          Jean-Paul Smets-Solane <jp@nexedi.com>
+#          Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Type/XMLMatrix.py b/product/ERP5Type/XMLMatrix.py
index 934048c837..cc09dcbe7b 100755
--- a/product/ERP5Type/XMLMatrix.py
+++ b/product/ERP5Type/XMLMatrix.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Type/XMLObject.py b/product/ERP5Type/XMLObject.py
index bc0767074d..2c0ba0b357 100755
--- a/product/ERP5Type/XMLObject.py
+++ b/product/ERP5Type/XMLObject.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Type/ZopePatch.py b/product/ERP5Type/ZopePatch.py
index 76adff21ad..830269f480 100755
--- a/product/ERP5Type/ZopePatch.py
+++ b/product/ERP5Type/ZopePatch.py
@@ -2,7 +2,7 @@
 #
 # Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#          Jean-Paul Smets-Solane <jp@nexedi.com>
+#          Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ERP5Type/__init__.py b/product/ERP5Type/__init__.py
index d0f2267269..68d6992568 100755
--- a/product/ERP5Type/__init__.py
+++ b/product/ERP5Type/__init__.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Nexedi/Document/NetworkProduct.py b/product/Nexedi/Document/NetworkProduct.py
index 53e749aebd..a87ac5b562 100755
--- a/product/Nexedi/Document/NetworkProduct.py
+++ b/product/Nexedi/Document/NetworkProduct.py
@@ -38,7 +38,7 @@ class NetworkProduct( ShopProduct, Document18 ):
     meta_type='Nexedi Service Product'
     portal_type='Service Product'
     effective_date = expiration_date = None
-    add_permission = Permissions.AddERP5Content
+    add_permission = Permissions.AddPortalContent
     isPortalContent = 1
     isRADContent = 1
 
diff --git a/product/Nexedi/Document/NexediServicePricing.py b/product/Nexedi/Document/NexediServicePricing.py
index 702ef489dd..8ab60b515b 100755
--- a/product/Nexedi/Document/NexediServicePricing.py
+++ b/product/Nexedi/Document/NexediServicePricing.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
@@ -43,7 +43,7 @@ class NexediServicePricing(SetPricing):
 
     meta_type = 'Nexedi Service Pricing'
     portal_type = 'Pricing'
-    add_permission = Permissions.AddERP5Content
+    add_permission = Permissions.AddPortalContent
     isPortalContent = 1
     isRADContent = 1
 
diff --git a/product/Nexedi/Document/WPNNode.py b/product/Nexedi/Document/WPNNode.py
index 732d47d09a..01e2dc1092 100755
--- a/product/Nexedi/Document/WPNNode.py
+++ b/product/Nexedi/Document/WPNNode.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
@@ -40,7 +40,7 @@ class WPNNode(Item):
 
     meta_type = 'Nexedi WPN Node'
     portal_type = 'WPN Node'
-    add_permission = Permissions.AddERP5Content
+    add_permission = Permissions.AddPortalContent
     isPortalContent = 1
     isRADContent = 1
 
diff --git a/product/Nexedi/PropertySheet/NetworkProduct.py b/product/Nexedi/PropertySheet/NetworkProduct.py
index 012dc637a7..6ff91243a7 100755
--- a/product/Nexedi/PropertySheet/NetworkProduct.py
+++ b/product/Nexedi/PropertySheet/NetworkProduct.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/Nexedi/PropertySheet/WPNNode.py b/product/Nexedi/PropertySheet/WPNNode.py
index 8b363de364..19b01bd0ec 100755
--- a/product/Nexedi/PropertySheet/WPNNode.py
+++ b/product/Nexedi/PropertySheet/WPNNode.py
@@ -1,7 +1,7 @@
 ##############################################################################
 #
 # Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
-#                    Jean-Paul Smets-Solane <jp@nexedi.com>
+#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
 #
 # WARNING: This program as such is intended to be used by professional
 # programmers who take the whole responsability of assessing all potential
diff --git a/product/ZSQLCatalog/SQLCatalog.py b/product/ZSQLCatalog/SQLCatalog.py
index 8f5aed459d..ed42cadbe4 100755
--- a/product/ZSQLCatalog/SQLCatalog.py
+++ b/product/ZSQLCatalog/SQLCatalog.py
@@ -97,19 +97,60 @@ class Catalog(Persistent, Acquisition.Implicit, ExtensionClass.Base):
 
   def getColumnIds(self):
     """
-    Calls the show column meythod and returns dictionnary of
+    Calls the show column method and returns dictionnary of
+    Field Ids
+    """
+    method_name = self.sql_catalog_schema
+    keys = {}
+    for table in self.getCatalogSearchTableIds():
+      try:
+        method = getattr(self,  method_name)
+        search_result = method(table=table)
+        for c in search_result:
+          keys[c.Field] = 1
+      except:
+        pass
+    keys = keys.keys()
+    keys.sort()
+    return keys
+
+  def getResultColumnIds(self):
+    """
+    Calls the show column method and returns dictionnary of
+    Field Ids
+    """
+    method_name = self.sql_catalog_schema
+    keys = {}
+    for table in self.getCatalogSearchTableIds():
+      try:
+        method = getattr(self,  method_name)
+        search_result = method(table=table)
+        for c in search_result:
+          keys['%s.%s' % (table, c.Field)] = 1
+      except:
+        pass
+    keys = keys.keys()
+    keys.sort()
+    return keys
+
+  def getTableIds(self):
+    """
+    Calls the show table method and returns dictionnary of
     Field Ids
     """
     keys = []
-    for method_name in self.sql_catalog_schema:
+    method_name = self.sql_catalog_tables
+    try:
       method = getattr(self,  method_name)
       search_result = method()
       for c in search_result:
-        keys.append(c.Field)
+        keys.append(c[0])
+    except:
+      pass
     return keys
 
   # the cataloging API
-  def catalogObject(self, object, path):
+  def catalogObject(self, object, path, is_object_moved=0):
     """
     Adds an object to the Catalog by calling
     all SQL methods and providing needed arguments.
@@ -119,11 +160,10 @@ class Catalog(Persistent, Acquisition.Implicit, ExtensionClass.Base):
     'uid' is the unique Catalog identifier for this object
 
     """
-    #LOG('Catalog object:',0,str(path))
+    LOG('Catalog object:',0,str(path))
 
     # Prepare the dictionnary of values
     kw = {}
-    #kw['path'] = join(object.getPhysicalPath(),'/')
 
     # Check if already Catalogued
     if hasattr(object, 'uid'):
@@ -131,11 +171,14 @@ class Catalog(Persistent, Acquisition.Implicit, ExtensionClass.Base):
       # WARNING COPY PASTE....
       uid = object.uid
     else:
-      # Look up in path
+      # Look up in (previous) path
       uid = 0
-    index = self.getUidForPath(path)
+    if is_object_moved:
+      index = uid # We trust the current uid
+    else:
+      index = self.getUidForPath(path)
     if index:
-      if uid != index:
+      if (uid != index):
         # Update uid attribute of object
         uid = int(index)
         LOG("Write Uid",0, "uid %s index %s" % (uid, index))
@@ -187,7 +230,9 @@ class Catalog(Persistent, Acquisition.Implicit, ExtensionClass.Base):
       # Get the appropriate SQL Method
       # Lookup by path is required because of OFS Semantics
       if uid:
-        # Make sure no duplicates
+        # Make sure no duplicates - ie. if an object with different path has same uid, we need a new uid
+        # This can be very dangerous with relations stored in a category table (CMFCategory)
+        # This is why we recommend completely reindexing subobjects after any change of id
         if self.hasUid(uid):
           uid = 0
       if not uid:
@@ -277,6 +322,8 @@ class Catalog(Persistent, Acquisition.Implicit, ExtensionClass.Base):
     XXX Add filter of methods
 
     """
+    LOG('Uncatalog object:',0,str(path))
+
     uid = self.getUidForPath(path)
     methods = self.sql_uncatalog_object
     for method_name in methods:
diff --git a/product/ZSQLCatalog/ZSQLCatalog.py b/product/ZSQLCatalog/ZSQLCatalog.py
index f89f58d677..f7f0367ea5 100755
--- a/product/ZSQLCatalog/ZSQLCatalog.py
+++ b/product/ZSQLCatalog/ZSQLCatalog.py
@@ -127,81 +127,97 @@ class ZCatalog(Folder, Persistent, Implicit):
      ['searchResults', '__call__', 'uniqueValuesFor',
       'getpath', 'schema', 'names', 'columns', 'indexes', 'index_objects',
       'all_meta_types', 'valid_roles', 'resolve_url',
-      'getobject', 'getObject', 'getObjectList'],
+      'getobject', 'getObject', 'getObjectList', 'getCatalogSearchTableIds',
+      'getCatalogSearchResultKeys', ],
      ['Anonymous', 'Manager']),
     )
 
   _properties = (
-    {   'id'      : 'title',
+    { 'id'      : 'title',
       'description' : 'The title of this catalog',
       'type'    : 'string',
       'mode'    : 'w' },
-    {   'id'      : 'sql_catalog_object',
+    { 'id'      : 'sql_catalog_object',
       'description' : 'Methods to be called to catalog an object',
       'type'    : 'multiple selection',
       'select_variable' : 'getCatalogMethodIds',
       'mode'    : 'w' },
-    {   'id'      : 'sql_uncatalog_object',
+    { 'id'      : 'sql_uncatalog_object',
       'description' : 'Methods to be called to uncatalog an object',
       'type'    : 'multiple selection',
       'select_variable' : 'getCatalogMethodIds',
       'mode'    : 'w' },
-    {   'id'      : 'sql_update_object',
+    { 'id'      : 'sql_update_object',
       'description' : 'Methods will be called to updat a catalogued object',
       'type'    : 'multiple selection',
       'select_variable' : 'getCatalogMethodIds',
       'mode'    : 'w' },
-    {   'id'      : 'sql_clear_catalog',
+    { 'id'      : 'sql_clear_catalog',
       'description' : 'The methods which should be called to clear the catalog',
       'type'    : 'multiple selection',
       'select_variable' : 'getCatalogMethodIds',
       'mode'    : 'w' },
-    {   'id'      : 'sql_search_results',
+    { 'id'      : 'sql_search_results',
       'description' : 'Main method to search the catalog',
       'type'    : 'selection',
       'select_variable' : 'getCatalogMethodIds',
       'mode'    : 'w' },
-    {   'id'      : 'sql_count_results',
+    { 'id'      : 'sql_search_tables',
+      'description' : 'Tables to join in the result',
+      'type'    : 'multiple selection',
+      'select_variable' : 'getTableIds',
+      'mode'    : 'w' },
+    { 'id'      : 'sql_search_result_keys',
+      'description' : 'Keys to display in the result',
+      'type'    : 'multiple selection',
+      'select_variable' : 'getResultColumnIds',
+      'mode'    : 'w' },
+    { 'id'      : 'sql_count_results',
       'description' : 'Main method to search the catalog',
       'type'    : 'selection',
       'select_variable' : 'getCatalogMethodIds',
       'mode'    : 'w' },
-    {   'id'      : 'sql_getitem_by_path',
+    { 'id'      : 'sql_getitem_by_path',
       'description' : 'Get a catalog brain by path',
       'type'    : 'selection',
       'select_variable' : 'getCatalogMethodIds',
       'mode'    : 'w' },
-    {   'id'      : 'sql_getitem_by_uid',
+    { 'id'      : 'sql_getitem_by_uid',
       'description' : 'Get a catalog brain by uid',
       'type'    : 'selection',
       'select_variable' : 'getCatalogMethodIds',
       'mode'    : 'w' },
-    {   'id'      : 'sql_catalog_schema',
+    { 'id'      : 'sql_catalog_tables',
+      'description' : 'Method to get the main catalog tables',
+      'type'    : 'selection',
+      'select_variable' : 'getCatalogMethodIds',
+      'mode'    : 'w' },
+    { 'id'      : 'sql_catalog_schema',
       'description' : 'Method to get the main catalog schema',
-      'type'    : 'multiple selection',
+      'type'    : 'selection',
       'select_variable' : 'getCatalogMethodIds',
       'mode'    : 'w' },
-    {   'id'      : 'sql_unique_values',
-      'description' : 'Find unique disctinc values in a column',
+    { 'id'      : 'sql_unique_values',
+      'description' : 'Find unique disctinct values in a column',
       'type'    : 'selection',
       'select_variable' : 'getCatalogMethodIds',
       'mode'    : 'w' },
-    {   'id'      : 'sql_catalog_paths',
+    { 'id'      : 'sql_catalog_paths',
       'description' : 'List all object paths in catalog',
       'type'    : 'selection',
       'select_variable' : 'getCatalogMethodIds',
       'mode'    : 'w' },
-    {   'id'      : 'sql_catalog_keyword_search_keys',
+    { 'id'      : 'sql_catalog_keyword_search_keys',
       'description' : 'Columns which should be considered as full text search',
       'type'    : 'multiple selection',
       'select_variable' : 'getColumnIds',
       'mode'    : 'w' },
-    {   'id'      : 'sql_catalog_full_text_search_keys',
+    { 'id'      : 'sql_catalog_full_text_search_keys',
       'description' : 'Columns which should be considered as full text search',
       'type'    : 'multiple selection',
       'select_variable' : 'getColumnIds',
       'mode'    : 'w' },
-    {   'id'      : 'sql_catalog_request_keys',
+    { 'id'      : 'sql_catalog_request_keys',
       'description' : 'Columns which should be ignore in the REQUEST in order to accelerate caching',
       'type'    : 'multiple selection',
       'select_variable' : 'getColumnIds',
@@ -216,12 +232,15 @@ class ZCatalog(Folder, Persistent, Implicit):
   sql_count_results = 'count_results'
   sql_getitem_by_path = 'getitem_by_path'
   sql_getitem_by_uid = 'getitem_by_uid'
+  sql_catalog_tables = 'catalog_tables'
+  sql_search_tables = ()
   sql_catalog_schema = ('catalog_schema')
   sql_unique_values = 'unique_values'
   sql_catalog_paths = 'catalog_paths'
   sql_catalog_keyword_search_keys =  ('Description', 'Title', 'SearchableText')
   sql_catalog_full_text_search_keys = ()
   sql_catalog_request_keys = ()
+  sql_search_result_keys = ()
 
 
   manage_catalogAddRowForm = DTMLFile('dtml/catalogAddRowForm', globals())
@@ -400,7 +419,7 @@ class ZCatalog(Folder, Persistent, Implicit):
       RESPONSE.redirect(URL1 + '/manage_catalogSchema?manage_tabs_message=Schema%20Saved')
 
 
-  def catalog_object(self, obj, uid=None, idxs=[]):
+  def catalog_object(self, obj, uid=None, idxs=[], is_object_moved=0):
     """ wrapper around catalog """
 
     if uid is None:
@@ -414,7 +433,7 @@ class ZCatalog(Folder, Persistent, Implicit):
     elif not isinstance(uid, types.StringType):
       raise CatalogError('The object unique id must be a string.')
 
-    self._catalog.catalogObject(obj, uid)
+    self._catalog.catalogObject(obj, uid, is_object_moved=is_object_moved)
 
   def uncatalog_object(self, uid):
     """ wrapper around catalog """
@@ -610,7 +629,7 @@ class ZCatalog(Folder, Persistent, Implicit):
     for id, ob in items:
       if pre: p="%s/%s" % (pre, id)
       else:   p=id
-      
+
       dflag=0
       if hasattr(ob, '_p_changed') and (ob._p_changed == None):
         dflag=1
@@ -719,6 +738,38 @@ class ZCatalog(Folder, Persistent, Implicit):
           '%s unchanged.' % (len(fixed), len(removed), unchanged),
       action='./manage_main')
 
+  def getTableIds(self):
+    """Returns all tables of this catalog
+    """
+    return self._catalog.getTableIds()
+
+  def getCatalogSearchResultKeys(self):
+    """Return selected tables of catalog which are used in JOIN.
+       catalaog is always first
+    """
+    return self.sql_search_result_keys
+
+  def getCatalogSearchTableIds(self):
+    """Return selected tables of catalog which are used in JOIN.
+       catalaog is always first
+    """
+    if len(self.sql_search_tables) > 0:
+      if self.sql_search_tables[0] != 'catalog':
+        result = ['catalog']
+        for t in self.sql_search_tables:
+          if t != 'catalog':
+            result.append(t)
+        self.sql_search_tables = result
+    else:
+      self.sql_search_tables = ['catalog']
+    return self.sql_search_tables
+
+  def getResultColumnIds(self):
+    """Return selected tables of catalog which are used
+       as metadata
+    """
+    return self._catalog.getResultColumnIds()
+
   def getCatalogMethodIds(self):
     """Find Z SQL methods in the current folder and above
     This function return a list of ids.
-- 
2.30.9