From ed9a35234269049b81b0d809e594895ccd43170d Mon Sep 17 00:00:00 2001
From: Sebastien Robin <seb@nexedi.com>
Date: Fri, 21 Jan 2005 09:53:08 +0000
Subject: [PATCH] moved Category from Tool to Document

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@2258 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 product/ERP5/Document/BaseCategory.py |  58 ++++++++++++++
 product/ERP5/Document/Category.py     | 110 ++++++++++++++++++++++++++
 2 files changed, 168 insertions(+)
 create mode 100755 product/ERP5/Document/BaseCategory.py
 create mode 100755 product/ERP5/Document/Category.py

diff --git a/product/ERP5/Document/BaseCategory.py b/product/ERP5/Document/BaseCategory.py
new file mode 100755
index 0000000000..f6ac2c1133
--- /dev/null
+++ b/product/ERP5/Document/BaseCategory.py
@@ -0,0 +1,58 @@
+##############################################################################
+#
+# Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
+#                    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
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+##############################################################################
+
+from Products.CMFCategory.Category import BaseCategory as CMFBaseCategory
+from AccessControl import ClassSecurityInfo
+
+from Products.ERP5Type import Interface, Permissions, PropertySheet
+from Products.ERP5Type.XMLObject import XMLObject
+
+from zLOG import LOG
+
+
+class BaseCategory(CMFBaseCategory, XMLObject):
+    """
+      Base Categories allow to implement virtual categories
+      through acquisition
+    """
+    meta_type='ERP5 Base Category'
+    portal_type='Base Category' # maybe useful some day
+    isPortalContent = 1
+    isRADContent = 1
+    isCategory = 1
+    allowed_types = ('ERP5 Category', )
+
+    # Declarative security
+    security = ClassSecurityInfo()
+    security.declareObjectProtected(Permissions.View)
+
+
+    property_sheets = ( PropertySheet.Base
+                      , PropertySheet.SimpleItem
+                      , PropertySheet.BaseCategory)
+
diff --git a/product/ERP5/Document/Category.py b/product/ERP5/Document/Category.py
new file mode 100755
index 0000000000..b9b4277bf7
--- /dev/null
+++ b/product/ERP5/Document/Category.py
@@ -0,0 +1,110 @@
+##############################################################################
+#
+# Copyright (c) 2002 Nexedi SARL and Contributors. All Rights Reserved.
+#                    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
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+##############################################################################
+
+from Products.CMFCategory.Category import Category as CMFCategory
+from AccessControl import ClassSecurityInfo
+
+from Products.ERP5.Document.MetaNode import MetaNode
+from Products.ERP5.Document.MetaResource import MetaResource
+from Products.ERP5Type import Interface, Permissions, PropertySheet
+from Products.ERP5.Document.PredicateGroup import PredicateGroup
+
+from zLOG import LOG
+
+
+class Category(CMFCategory, PredicateGroup, MetaNode, MetaResource):
+    """
+        Category objects allow to define classification categories
+        in an ERP5 portal. For example, a document may be assigned a color
+        attribute (red, blue, green). Rather than assigning an attribute
+        with a pop-up menu (which is still a possibility), we can prefer
+        in certain cases to associate to the object a category. In this
+        example, the category will be named color/red, color/blue or color/green
+
+        Categories can include subcategories. For example, a region category can
+        define
+            region/europe
+            region/europe/west/
+            region/europe/west/france
+            region/europe/west/germany
+            region/europe/south/spain
+            region/americas
+            region/americas/north
+            region/americas/north/us
+            region/americas/south
+            region/asia
+
+        In this example the base category is 'region'.
+
+        Categories are meant to be indexed with the ZSQLCatalog (and thus
+        a unique UID will be automatically generated each time a category is
+        indexed).
+
+        Categories allow define sets and subsets of objects and can be used
+        for many applications :
+
+        - association of a document to a URL
+
+        - description of organisations (geographical, professional)
+
+        Through acquisition, it is possible to create 'virtual' classifications based
+        on existing documents or categories. For example, if there is a document at
+        the URL
+            organisation/nexedi
+        and there exists a base category 'client', then the portal_categories tool
+        will allow to create a virtual category
+            client/organisation/nexedi
+
+        Virtual categories allow not to duplicate information while providing
+        a representation power equivalent to RDF or relational databases.
+
+        Categories are implemented as a subclass of BTreeFolders
+
+        NEW: categories should also be able to act as a domain. We should add
+        a Domain interface to categories so that we do not need to regenerate
+        report trees for categories.
+    """
+
+    meta_type='ERP5 Category'
+    portal_type='Category' # may be useful in the future...
+    isPortalContent = 1
+    isRADContent = 1
+    isCategory = 1
+    allowed_types = ('ERP5 Category', )
+
+    # Declarative security
+    security = ClassSecurityInfo()
+    security.declareProtected(Permissions.ManagePortal,
+                              'manage_editProperties',
+                              'manage_changeProperties',
+                              'manage_propertiesForm',
+                                )
+
+    property_sheets = ( PropertySheet.Base
+                      , PropertySheet.SimpleItem )
+
-- 
2.30.9