Commit 9ddcbfc1 authored by Nicolas Dumazet's avatar Nicolas Dumazet

First step of migration to zodb property sheets

* ERP5Type.PropertySheet becomes a dynamic module that returns strings
  instead of classes for compatibility:
  - the document classes can now use strings in property_sheets attribute
  - if a document uses a string instead of a class reference to point to a
    property sheet, it means that the property sheet can either be an old
    (filesytem, local, in a product) property sheet, or a zodb propertysheet

  For now, the contents of ERP5Type.PropertySheet (strings) are overwritten
  if a local PropertySheet is loaded from the disk. But with time, as
  property sheets will migrate to ZODB, the module will empty itself and
  contain only strings.

* Move all property sheets from all products to ERP5PropertySheetLegacy
  product. Only property sheets that were left 'as is' are CMF* property
  sheets.

This commit is mostly a move to another Product, and should have small
consequences on tests/existing instances.

However, if you used to import PropertySheets in custom/project code
in your custom Property Sheets, you will need to rename:
   from Products.*.PropertySheet.Foo import Foo
to:
   from Products.ERP5PropertySheetLegacy.Foo import Foo



git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@41639 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent e1fa1868
......@@ -27,7 +27,7 @@
#
##############################################################################
from Products.ERP5.PropertySheet.Path import Path
from Path import Path
class Assignment(Path):
......
......@@ -25,7 +25,7 @@
#
##############################################################################
from Products.ERP5.PropertySheet.Order import Order
from Order import Order
class PackingList(Order):
......
......@@ -27,7 +27,7 @@
#
##############################################################################
from Products.ERP5.PropertySheet.DecimalOption import DecimalOption
from DecimalOption import DecimalOption
class RoundingModel(DecimalOption):
......
from Base import Base
from CacheFactory import CacheFactory
from DublinCore import DublinCore
from Folder import Folder
from SimpleItem import SimpleItem
from XMLObject import XMLObject
from DocumentationHelper import DocumentationHelper
from BaseType import BaseType
from ActionInformation import ActionInformation
from RoleInformation import RoleInformation
from SortIndex import SortIndex
from BaseCache import BaseCache
from DistributedRamCache import DistributedRamCache
from Url import Url
from MemcachedPlugin import MemcachedPlugin
from StandardProperty import StandardProperty
from TranslatableProperty import TranslatableProperty
from AcquiredProperty import AcquiredProperty
from DynamicCategoryProperty import DynamicCategoryProperty
from CategoryExistenceConstraint import CategoryExistenceConstraint
from PropertyExistenceConstraint import PropertyExistenceConstraint
from AttributeEqualityConstraint import AttributeEqualityConstraint
from ContentExistenceConstraint import ContentExistenceConstraint
from CategoryMembershipArityConstraint import CategoryMembershipArityConstraint
from CategoryRelatedMembershipArityConstraint import \
CategoryRelatedMembershipArityConstraint
from TALESConstraint import TALESConstraint
from PropertyTypeValidityConstraint import PropertyTypeValidityConstraint
......@@ -40,6 +40,20 @@ document_class_registry = {}
# similarly for mixins
mixin_class_registry = {}
# For early phases of bootstrap (and future ZODB property sheets)
# ERP5Type.PropertySheet becomes a dynamic module that always
# returns a string. ERP5Type.PropertySheet.doesnotexist for example
# is 'doesnotexist'
# Later on, if a local property sheet is imported from a product,
# importLocalPropertySheet will load it as ERP5Type.PropertySheet.*
# This is mostly a backwards compatible mechanism, to ensure that
# old class definitions will still work with properties such as
# property_sheets = (ERP5Type.PropertySheet.YYY, ... )
# after transforming 'YYY' into a ZODB property sheet
from dynamic.dynamic_module import registerDynamicModule
PropertySheet = registerDynamicModule('Products.ERP5Type.PropertySheet',
lambda name: name)
# Switch(es) for ongoing development which require single code base
# Update ERP5 Globals
......@@ -54,7 +68,7 @@ document_classes = updateGlobals( this_module,
permissions_module=Permissions,
is_erp5_type=1 )
import PropertySheet, ZopePatch
import ZopePatch
import interfaces
import Products.Localizer # So that we make sure Globals.get_request is available
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment