def initializeDynamicModules(): """ Create erp5 module and its submodules erp5.portal_type holds portal type classes erp5.temp_portal_type holds portal type classes for temp objects erp5.document holds document classes that have no physical import path, for example classes created through ClassTool that are in $INSTANCE_HOME/Document erp5.accessor_holder holds accessor holders common to ZODB Property Sheets and Portal Types erp5.accessor_holder.property_sheet holds accessor holders of ZODB Property Sheets erp5.accessor_holder.portal_type holds accessors holders of Portal Types """ erp5 = ModuleType("erp5") sys.modules["erp5"] = erp5 erp5.document = ModuleType("erp5.document") sys.modules["erp5.document"] = erp5.document erp5.accessor_holder = AccessorHolderModuleType("erp5.accessor_holder") sys.modules["erp5.accessor_holder"] = erp5.accessor_holder erp5.accessor_holder.property_sheet = \ AccessorHolderModuleType("erp5.accessor_holder.property_sheet") sys.modules["erp5.accessor_holder.property_sheet"] = \ erp5.accessor_holder.property_sheet erp5.accessor_holder.portal_type = registerDynamicModule( 'erp5.accessor_holder.portal_type', AccessorHolderModuleType) portal_type_container = registerDynamicModule('erp5.portal_type', generateLazyPortalTypeClass) erp5.portal_type = portal_type_container def loadTempPortalTypeClass(portal_type_name): """ Returns a class suitable for a temporary portal type This class will in fact be a subclass of erp5.portal_type.xxx, which means that loading an attribute on this temporary portal type loads the lazily-loaded parent class, and that any changes on the parent class will be reflected on the temporary objects. """ klass = getattr(portal_type_container, portal_type_name) return type("Temporary %s" % portal_type_name, (TemporaryDocumentMixin, klass), {}) erp5.temp_portal_type = registerDynamicModule('erp5.temp_portal_type', loadTempPortalTypeClass)
def initializeDynamicModules(): """ Create erp5 module and its submodules erp5.portal_type holds portal type classes erp5.temp_portal_type holds portal type classes for temp objects erp5.document holds document classes that have no physical import path, for example classes created through ClassTool that are in $INSTANCE_HOME/Document erp5.accessor_holder holds accessor holders common to ZODB Property Sheets and Portal Types erp5.accessor_holder.property_sheet holds accessor holders of ZODB Property Sheets erp5.accessor_holder.portal_type holds accessors holders of Portal Types erp5.component: holds ZODB Component packages erp5.component.document: holds Document modules previously found in bt5 in $INSTANCE_HOME/Document erp5.component.extension: holds Extension modules previously found in bt5 in $INSTANCE_HOME/Extensions erp5.component.test: holds Live Test modules previously found in bt5 in $INSTANCE_HOME/test """ erp5 = ModuleType("erp5") sys.modules["erp5"] = erp5 # Document classes without physical import path erp5.document = ModuleType("erp5.document") sys.modules["erp5.document"] = erp5.document # Portal types as classes from accessor_holder import AccessorHolderType, AccessorHolderModuleType erp5.accessor_holder = AccessorHolderModuleType("erp5.accessor_holder") sys.modules["erp5.accessor_holder"] = erp5.accessor_holder erp5.accessor_holder.property_sheet = \ AccessorHolderModuleType("erp5.accessor_holder.property_sheet") sys.modules["erp5.accessor_holder.property_sheet"] = \ erp5.accessor_holder.property_sheet erp5.accessor_holder.portal_type = registerDynamicModule( 'erp5.accessor_holder.portal_type', AccessorHolderModuleType) from lazy_class import generateLazyPortalTypeClass erp5.portal_type = registerDynamicModule('erp5.portal_type', generateLazyPortalTypeClass) from portal_type_class import loadTempPortalTypeClass erp5.temp_portal_type = registerDynamicModule('erp5.temp_portal_type', loadTempPortalTypeClass) # ZODB Components erp5.component = ModuleType("erp5.component") sys.modules["erp5.component"] = erp5.component from component_package import ComponentDynamicPackage erp5.component.extension = ComponentDynamicPackage('erp5.component.extension', 'Extension Component') erp5.component.document = ComponentDynamicPackage('erp5.component.document', 'Document Component') erp5.component.test = ComponentDynamicPackage('erp5.component.test', 'Test Component')