[Erp5-report] r8399 - /erp5/trunk/products/ERP5/ERP5Site.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Jul 11 15:17:12 CEST 2006
Author: romain
Date: Tue Jul 11 15:17:10 2006
New Revision: 8399
URL: http://svn.erp5.org?rev=8399&view=rev
Log:
We want to create ERP5 Site without catalog.
Modified:
erp5/trunk/products/ERP5/ERP5Site.py
Modified: erp5/trunk/products/ERP5/ERP5Site.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/ERP5Site.py?rev=8399&r1=8398&r2=8399&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/ERP5Site.py (original)
+++ erp5/trunk/products/ERP5/ERP5Site.py Tue Jul 11 15:17:10 2006
@@ -34,10 +34,8 @@
from zLOG import LOG
from string import join
-
import os
MARKER = []
-
# Site Creation DTML
@@ -45,73 +43,69 @@
manage_addERP5SiteForm.__name__ = 'addERP5Site'
# ERP5Site Constructor
-def manage_addERP5Site( self
- , id
- , title = 'ERP5'
- , description = ''
- , create_userfolder = 1
- , create_activities = 1
- , email_from_address = 'postmaster at localhost'
- , email_from_name = 'Portal Administrator'
- , validate_email = 0
- , erp5_sql_connection_type = 'Z MySQL Database Connection'
- , erp5_sql_connection_string = 'test test'
- , erp5_sql_deferred_connection_type = 'Z MySQL Deferred Database Connection'
- , erp5_sql_deferred_connection_string = 'test test'
- , cmf_activity_sql_connection_type = 'Z MySQL Database Connection'
- , cmf_activity_sql_connection_string = 'test test'
- , light_install = 0
- , reindex = 1
- , RESPONSE = None
- ):
- """
- Adds a portal instance.
- """
+def manage_addERP5Site(self,
+ id,
+ title='ERP5',
+ description='',
+ create_userfolder=1,
+ create_activities=1,
+ email_from_address='postmaster at localhost',
+ email_from_name='Portal Administrator',
+ validate_email=0,
+ erp5_sql_connection_type='Z MySQL Database Connection',
+ erp5_sql_connection_string='test test',
+ erp5_sql_deferred_connection_type = \
+ 'Z MySQL Deferred Database Connection',
+ erp5_sql_deferred_connection_string = 'test test',
+ cmf_activity_sql_connection_type= \
+ 'Z MySQL Database Connection',
+ cmf_activity_sql_connection_string='test test',
+ light_install=0,
+ reindex=1,
+ RESPONSE=None):
+ '''
+ Adds a portal instance.
+ '''
gen = ERP5Generator()
id = str(id).strip()
- p = gen.create( self
- , id
- , create_userfolder
- , erp5_sql_connection_type
- , erp5_sql_connection_string
- , erp5_sql_deferred_connection_type
- , erp5_sql_deferred_connection_string
- , cmf_activity_sql_connection_type
- , cmf_activity_sql_connection_string
- , create_activities
- , light_install = light_install
- , reindex = reindex
- )
- gen.setupDefaultProperties( p
- , title
- , description
- , email_from_address
- , email_from_name
- , validate_email
- )
+ p = gen.create(self,
+ id,
+ create_userfolder,
+ erp5_sql_connection_type,
+ erp5_sql_connection_string,
+ erp5_sql_deferred_connection_type,
+ erp5_sql_deferred_connection_string,
+ cmf_activity_sql_connection_type,
+ cmf_activity_sql_connection_string,
+ create_activities=create_activities,
+ light_install=light_install,
+ reindex=reindex)
+ gen.setupDefaultProperties(p,
+ title,
+ description,
+ email_from_address,
+ email_from_name,
+ validate_email)
if RESPONSE is not None:
RESPONSE.redirect(p.absolute_url())
-
-
class ERP5Site(FolderMixIn, CMFSite):
"""
- The *only* function this class should have is to help in the setup
- of a new ERP5. It should not assist in the functionality at all.
+ The *only* function this class should have is to help in the setup
+ of a new ERP5. It should not assist in the functionality at all.
"""
- meta_type = 'ERP5 Site'
+ meta_type = 'ERP5 Site'
constructors = (manage_addERP5SiteForm, manage_addERP5Site, )
- uid = 0
- last_id = 0
- icon = 'portal.gif'
-
- _properties = ( { 'id' : 'title'
- , 'type': 'string'
- }
- , { 'id' : 'description'
- , 'type': 'text'
- }
- )
+ uid = 0
+ last_id = 0
+ icon = 'portal.gif'
+
+ _properties = (
+ { 'id':'title',
+ 'type':'string'},
+ { 'id':'description',
+ 'type':'text'},
+ )
title = ''
description = ''
@@ -119,7 +113,6 @@
security = ClassSecurityInfo()
security.declareObjectProtected(Permissions.AccessContentsInformation)
-
security.declareProtected(Permissions.View, 'view')
def view(self):
"""
@@ -128,26 +121,24 @@
"""
return self.index_html()
-
def hasObject(self, id):
"""
- Check if the portal has an id.
+ Check if the portal has an id.
"""
return id in self.objectIds()
-
- security.declareProtected(Permissions.AccessContentsInformation, 'getPortalObject')
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getPortalObject')
def getPortalObject(self):
return self
-
- security.declareProtected(Permissions.AccessContentsInformation, 'getTitle')
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getTitle')
def getTitle(self):
"""
Return the title.
"""
return self.title
-
security.declareProtected(Permissions.AccessContentsInformation, 'getUid')
def getUid(self):
@@ -160,27 +151,24 @@
"""
return getattr(self, 'uid', 0)
-
- security.declareProtected(Permissions.AccessContentsInformation, 'getParentUid')
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getParentUid')
def getParentUid(self):
"""
A portal has no parent
"""
return self.getUid()
-
# Required to allow content creation outside folders
security.declareProtected(Permissions.View, 'getIdGroup')
def getIdGroup(self):
return None
-
# Required to allow content creation outside folders
security.declareProtected(Permissions.ModifyPortalContent, 'setLastId')
def setLastId(self, id):
self.last_id = id
-
security.declareProtected(Permissions.AccessContentsInformation, 'getPath')
def getPath(self, REQUEST=None):
"""
@@ -188,8 +176,8 @@
"""
return join(self.getPhysicalPath(),'/')
-
- security.declareProtected(Permissions.AccessContentsInformation, 'searchFolder')
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'searchFolder')
def searchFolder(self, **kw):
"""
Search the content of a folder by calling
@@ -198,15 +186,16 @@
if not kw.has_key('parent_uid'):
kw['parent_uid'] = self.uid
kw2 = {}
- # Remove useless matter before calling the catalog. In particular, consider empty
- # strings as None values.
+ # Remove useless matter before calling the
+ # catalog. In particular, consider empty
+ # strings as None values
for cname in kw.keys():
if kw[cname] not in ('', None):
kw2[cname] = kw[cname]
- # The method to call to search the folder content has to be called z_search_folder.
+ # The method to call to search the folder
+ # content has to be called z_search_folder
method = self.portal_catalog.searchResults
return method(**kw2)
-
security.declareProtected(Permissions.AccessContentsInformation, 'countFolder')
def countFolder(self, **kw):
@@ -217,26 +206,28 @@
if not kw.has_key('parent_uid'):
kw['parent_uid'] = self.uid
kw2 = {}
- # Remove useless matter before calling the catalog. In particular, consider empty
- # strings as None values
+ # Remove useless matter before calling the
+ # catalog. In particular, consider empty
+ # strings as None values
for cname in kw.keys():
if kw[cname] not in ('', None):
kw2[cname] = kw[cname]
- # The method to call to search the folder content has to be called z_search_folder.
+ # The method to call to search the folder
+ # content has to be called z_search_folder
method = self.portal_catalog.countResults
return method(**kw2)
-
# Proxy methods for security reasons
def getOwnerInfo(self):
return self.owner_info()
-
security.declarePublic('getOrderedGlobalActionList')
def getOrderedGlobalActionList(self, action_list):
"""
- Returns a dictionnary of actions, sorted by type of object.
- TODO: This should absolutely be rewritten by using clean concepts to separate worklists.
+ Returns a dictionnary of actions, sorted by type of object
+
+ This should absolutely be rewritten by using clean
+ concepts to separate worklists XXX
"""
sorted_workflow_actions = {}
sorted_global_actions = []
@@ -258,28 +249,28 @@
sorted_global_actions.extend(other_global_actions)
return sorted_global_actions
-
def setupDefaultProperties(self, p, title, description,
- email_from_address, email_from_name,
- validate_email
- ):
+ email_from_address, email_from_name,
+ validate_email
+ ):
CMFSite.setupDefaultProperties(self, p, title, description,
- email_from_address, email_from_name,
- validate_email)
-
-
- # Portal methods are based on the concept of having portal-specific parameters
- # for customization. In the past, we used global parameters, but it was not very good
- # because it was very difficult to customize the settings for each portal site.
+ email_from_address, email_from_name,
+ validate_email)
+
+ # Portal methods are based on the concept of having portal-specific
+ # parameters for customization. In the past, we used global parameters,
+ # but it was not very good because it was very difficult
+ # to customize the settings for each portal site.
def _getPortalConfiguration(self, id):
"""
- Get a portal-specific configuration.
-
- Current implementation is using properties in a portal object.
- If not found, try to get a default value for backward compatibility.
-
- This implementation can be improved by gathering information from appropriate places,
- such as portal_types, portal_categories and portal_workflow.
+ Get a portal-specific configuration.
+
+ Current implementation is using properties in a portal object.
+ If not found, try to get a default value for backward compatibility.
+
+ This implementation can be improved by gathering information
+ from appropriate places, such as portal_types, portal_categories
+ and portal_workflow.
"""
if self.hasProperty(id):
return self.getProperty(id)
@@ -287,10 +278,9 @@
# Fall back to the default.
return getattr(ERP5Defaults, id, None)
-
def _getPortalGroupedTypeList(self, group):
"""
- Return a list of portal types classified to a specific group.
+ Return a list of portal types classified to a specific group.
"""
def getTypeList(group):
type_list = []
@@ -299,16 +289,14 @@
type_list.append(pt.getId())
return tuple(type_list)
- getTypeList = CachingMethod( getTypeList
- , id = ('_getPortalGroupedTypeList', group)
- , cache_duration = 3600
- )
+ getTypeList = CachingMethod(getTypeList,
+ id=('_getPortalGroupedTypeList', group),
+ cache_duration=3600)
return getTypeList(group)
-
def _getPortalGroupedCategoryList(self, group):
"""
- Return a list of base categories classified to a specific group.
+ Return a list of base categories classified to a specific group.
"""
def getCategoryList(group):
category_list = []
@@ -317,16 +305,15 @@
category_list.append(bc.getId())
return tuple(category_list)
- getCategoryList = CachingMethod( getCategoryList
- , id = ('_getPortalGroupedCategoryList', group)
- , cache_duration = 3600
- )
+ getCategoryList = CachingMethod(
+ getCategoryList,
+ id=('_getPortalGroupedCategoryList', group),
+ cache_duration=3600)
return getCategoryList(group)
-
def _getPortalGroupedStateList(self, group):
"""
- Return a list of workflow states classified to a specific group.
+ Return a list of workflow states classified to a specific group.
"""
def getStateList(group):
state_dict = {}
@@ -337,28 +324,27 @@
state_dict[state.getId()] = None
return tuple(state_dict.keys())
- getStateList = CachingMethod( getStateList
- , id = ('_getPortalGroupedStateList', group)
- , cache_duration = 3600
- )
+ getStateList = CachingMethod(getStateList,
+ id=('_getPortalGroupedStateList', group),
+ cache_duration=3600)
return getStateList(group)
-
- security.declareProtected( Permissions.AccessContentsInformation
- , 'getPortalDefaultSectionCategory')
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getPortalDefaultSectionCategory')
def getPortalDefaultSectionCategory(self):
"""
- Return a default section category. This method is deprecated.
+ Return a default section category. This method is deprecated.
"""
LOG('ERP5Site', 0, 'getPortalDefaultSectionCategory is deprecated;'+
' use portal_preferences.getPreferredSectionCategory instead.')
section_category = self.portal_preferences.getPreferredSectionCategory()
+
# XXX This is only for backward-compatibility.
if not section_category:
section_category = self._getPortalConfiguration(
'portal_default_section_category')
+
return section_category
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalResourceTypeList')
@@ -369,7 +355,6 @@
return self._getPortalGroupedTypeList('resource') or \
self._getPortalConfiguration('portal_resource_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalSubVariationTypeList')
def getPortalSubVariationTypeList(self):
@@ -378,7 +363,6 @@
"""
return self._getPortalGroupedTypeList('sub_variation')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalSubVariationBaseCategoryList')
def getPortalSubVariationBaseCategoryList(self):
@@ -387,7 +371,6 @@
"""
return self._getPortalGroupedCategoryList('sub_variation')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalVariationTypeList')
def getPortalVariationTypeList(self):
@@ -397,7 +380,6 @@
return self._getPortalGroupedTypeList('variation') or \
self._getPortalConfiguration('portal_variation_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalNodeTypeList')
def getPortalNodeTypeList(self):
@@ -407,7 +389,6 @@
return self._getPortalGroupedTypeList('node') or \
self._getPortalConfiguration('portal_node_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalPaymentNodeTypeList')
def getPortalPaymentNodeTypeList(self):
@@ -417,7 +398,6 @@
return self._getPortalGroupedTypeList('payment_node') or \
self._getPortalConfiguration('portal_payment_node_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalInvoiceTypeList')
def getPortalInvoiceTypeList(self):
@@ -427,7 +407,6 @@
return self._getPortalGroupedTypeList('invoice') or \
self._getPortalConfiguration('portal_invoice_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalOrderTypeList')
def getPortalOrderTypeList(self):
@@ -437,7 +416,6 @@
return self._getPortalGroupedTypeList('order') or \
self._getPortalConfiguration('portal_order_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalDeliveryTypeList')
def getPortalDeliveryTypeList(self):
@@ -447,7 +425,6 @@
return self._getPortalGroupedTypeList('delivery') or \
self._getPortalConfiguration('portal_delivery_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalTransformationTypeList')
def getPortalTransformationTypeList(self):
@@ -457,7 +434,6 @@
return self._getPortalGroupedTypeList('transformation') or \
self._getPortalConfiguration('portal_transformation_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalVariationBaseCategoryList')
def getPortalVariationBaseCategoryList(self):
@@ -467,7 +443,6 @@
return self._getPortalGroupedCategoryList('variation') or \
self._getPortalConfiguration('portal_variation_base_category_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalOptionBaseCategoryList')
def getPortalOptionBaseCategoryList(self):
@@ -477,7 +452,6 @@
return self._getPortalGroupedCategoryList('option') or \
self._getPortalConfiguration('portal_option_base_category_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalInvoiceMovementTypeList')
def getPortalInvoiceMovementTypeList(self):
@@ -487,7 +461,6 @@
return self._getPortalGroupedTypeList('invoice_movement') or \
self._getPortalConfiguration('portal_invoice_movement_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalOrderMovementTypeList')
def getPortalOrderMovementTypeList(self):
@@ -497,7 +470,6 @@
return self._getPortalGroupedTypeList('order_movement') or \
self._getPortalConfiguration('portal_order_movement_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalDeliveryMovementTypeList')
def getPortalDeliveryMovementTypeList(self):
@@ -507,9 +479,8 @@
return self._getPortalGroupedTypeList('delivery_movement') or \
self._getPortalConfiguration('portal_delivery_movement_type_list')
-
- security.declareProtected(Permissions.AccessContentsInformation,
- 'getPortalSupplyTypeList')
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getPortalSupplyTypeList')
def getPortalSupplyTypeList(self):
"""
Return supply types.
@@ -517,16 +488,14 @@
return self._getPortalGroupedTypeList('supply') or \
self._getPortalConfiguration('portal_supply_type_list')
-
- security.declareProtected(Permissions.AccessContentsInformation,
- 'getPortalSupplyPathTypeList')
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getPortalSupplyPathTypeList')
def getPortalSupplyPathTypeList(self):
"""
Return supply movement types.
"""
return self._getPortalGroupedTypeList('supply_path') or \
self._getPortalConfiguration('portal_supply_path_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalAcquisitionMovementTypeList')
@@ -538,7 +507,6 @@
list(self.getPortalDeliveryMovementTypeList()) +
list(self.getPortalInvoiceMovementTypeList()))
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalMovementTypeList')
def getPortalMovementTypeList(self):
@@ -548,8 +516,7 @@
return tuple(list(self.getPortalOrderMovementTypeList()) +
list(self.getPortalDeliveryMovementTypeList()) +
list(self.getPortalInvoiceMovementTypeList()) +
- ['Simulation Movement'])
-
+ ['Simulation Movement'])
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalSimulatedMovementTypeList')
@@ -558,8 +525,7 @@
Return simulated movement types.
"""
return tuple([x for x in self.getPortalMovementTypeList() \
- if x not in self.getPortalContainerTypeList()])
-
+ if x not in self.getPortalContainerTypeList()])
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalContainerTypeList')
@@ -570,7 +536,6 @@
return self._getPortalGroupedTypeList('container') or \
self._getPortalConfiguration('portal_container_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalContainerLineTypeList')
def getPortalContainerLineTypeList(self):
@@ -580,7 +545,6 @@
return self._getPortalGroupedTypeList('container_line') or \
self._getPortalConfiguration('portal_container_line_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalItemTypeList')
def getPortalItemTypeList(self):
@@ -590,7 +554,6 @@
return self._getPortalGroupedTypeList('item') or \
self._getPortalConfiguration('portal_item_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalDiscountTypeList')
def getPortalDiscountTypeList(self):
@@ -600,7 +563,6 @@
return self._getPortalGroupedTypeList('discount') or \
self._getPortalConfiguration('portal_discount_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalAlarmTypeList')
def getPortalAlarmTypeList(self):
@@ -610,7 +572,6 @@
return self._getPortalGroupedTypeList('alarm') or \
self._getPortalConfiguration('portal_alarm_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalPaymentConditionTypeList')
def getPortalPaymentConditionTypeList(self):
@@ -620,7 +581,6 @@
return self._getPortalGroupedTypeList('payment_condition') or \
self._getPortalConfiguration('portal_payment_condition_type_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalBalanceTransactionLineTypeList')
def getPortalBalanceTransactionLineTypeList(self):
@@ -628,8 +588,8 @@
Return balance transaction line types.
"""
return self._getPortalGroupedTypeList('balance_transaction_line') or \
- self._getPortalConfiguration('portal_balance_transaction_line_type_list')
-
+ self._getPortalConfiguration(
+ 'portal_balance_transaction_line_type_list')
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalCurrentInventoryStateList')
@@ -640,7 +600,6 @@
return self._getPortalGroupedStateList('current_inventory') or \
self._getPortalConfiguration('portal_current_inventory_state_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalDraftOrderStateList')
def getPortalDraftOrderStateList(self):
@@ -650,7 +609,6 @@
return self._getPortalGroupedStateList('draft_order') or \
self._getPortalConfiguration('portal_draft_order_state_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalPlannedOrderStateList')
def getPortalPlannedOrderStateList(self):
@@ -660,7 +618,6 @@
return self._getPortalGroupedStateList('planned_order') or \
self._getPortalConfiguration('portal_planned_order_state_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalReservedInventoryStateList')
def getPortalReservedInventoryStateList(self):
@@ -668,8 +625,7 @@
Return reserved inventory states.
"""
return self._getPortalGroupedStateList('reserved_inventory') or \
- self._getPortalConfiguration('portal_reserved_inventory_state_list')
-
+ self._getPortalConfiguration('portal_reserved_inventory_state_list')
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalFutureInventoryStateList')
@@ -680,14 +636,15 @@
return self._getPortalGroupedStateList('future_inventory') or \
self._getPortalConfiguration('portal_future_inventory_state_list')
-
- security.declareProtected(Permissions.AccessContentsInformation, 'getPortalUpdatableAmortisationTransactionStateList')
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getPortalUpdatableAmortisationTransactionStateList')
def getPortalUpdatableAmortisationTransactionStateList(self):
"""
- Return states when Amortisation Transaction can be updated by amortisation_transaction_builder.
- """
- return self._getPortalConfiguration('portal_updatable_amortisation_transaction_state_list')
-
+ Return states when Amortisation Transaction can be updated
+ by amortisation_transaction_builder.
+ """
+ return self._getPortalConfiguration(
+ 'portal_updatable_amortisation_transaction_state_list')
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalColumnBaseCategoryList')
@@ -698,7 +655,6 @@
return self._getPortalGroupedCategoryList('column') or \
self._getPortalConfiguration('portal_column_base_category_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalLineBaseCategoryList')
def getPortalLineBaseCategoryList(self):
@@ -708,7 +664,6 @@
return self._getPortalGroupedCategoryList('line') or \
self._getPortalConfiguration('portal_line_base_category_list')
-
security.declareProtected(Permissions.AccessContentsInformation,
'getPortalTabBaseCategoryList')
def getPortalTabBaseCategoryList(self):
@@ -718,58 +673,56 @@
return self._getPortalGroupedCategoryList('tab') or \
self._getPortalConfiguration('portal_tab_base_category_list')
-
def getPortalDefaultGapRoot(self):
"""
Return the Accounting Plan to use by default (return the root node)
"""
- LOG('ERP5Site', 0, 'getPortalDefaultGapRoot is deprecated;'+
- ' use portal_preferences.getPreferredAccountingTransactionGap instead.')
+ LOG('ERP5Site', 0,
+ 'getPortalDefaultGapRoot is deprecated; ' \
+ 'use portal_preferences.getPreferredAccountingTransactionGap instead.')
+
return self.portal_preferences.getPreferredAccountingTransactionGap() or \
self._getPortalConfiguration('portal_default_gap_root')
-
def getPortalAccountingMovementTypeList(self) :
"""
Return accounting movement type list.
"""
return self._getPortalGroupedTypeList('accounting_movement') or \
- self._getPortalConfiguration('portal_accounting_movement_type_list')
-
+ self._getPortalConfiguration('portal_accounting_movement_type_list')
def getPortalAccountingTransactionTypeList(self) :
"""
Return accounting transaction movement type list.
"""
return self._getPortalGroupedTypeList('accounting_transaction') or \
- self._getPortalConfiguration('portal_accounting_transaction_type_list')
-
+ self._getPortalConfiguration('portal_accounting_transaction_type_list')
def getPortalAssignmentBaseCategoryList(self):
"""
Return List of category values to generate security groups.
"""
return self._getPortalGroupedCategoryList('assignment') or \
- self._getPortalConfiguration('portal_assignment_base_category_list')
-
-
- security.declareProtected(Permissions.AccessContentsInformation, 'getPortalTicketTypeList')
+ self._getPortalConfiguration('portal_assignment_base_category_list')
+
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getPortalTicketTypeList')
def getPortalTicketTypeList(self):
"""
Return ticket types.
"""
return self._getPortalGroupedTypeList('ticket')
-
- security.declareProtected(Permissions.AccessContentsInformation, 'getPortalEventTypeList')
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getPortalEventTypeList')
def getPortalEventTypeList(self):
"""
Return event types.
"""
return self._getPortalGroupedTypeList('event')
-
- security.declareProtected(Permissions.AccessContentsInformation, 'getDefaultModuleId')
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getDefaultModuleId')
def getDefaultModuleId(self, portal_type, default=MARKER):
"""
Return default module id where a object with portal_type can
@@ -784,18 +737,19 @@
if default is not MARKER:
return default
LOG('ERP5Site, getDefaultModuleId', 0,
- 'Unable to find default module for portal_type: %s' % portal_type)
- raise ValueError, 'Unable to find module for portal_type: %s' % portal_type
+ 'Unable to find default module for portal_type: %s' % \
+ portal_type)
+ raise ValueError, 'Unable to find module for portal_type: %s' % \
+ portal_type
return module_name
-
- security.declareProtected(Permissions.AccessContentsInformation, 'getDefaultModule')
+ security.declareProtected(Permissions.AccessContentsInformation,
+ 'getDefaultModule')
def getDefaultModule(self, portal_type):
"""
Return default module where a object with portal_type can be created
"""
return getattr(self, self.getDefaultModuleId(portal_type), None)
-
security.declareProtected(Permissions.AddPortalContent, 'newContent')
def newContent(self, id=None, portal_type=None, immediate_reindex=0, **kw):
@@ -806,10 +760,10 @@
raise ValueError, 'The id should not be None'
if portal_type is None:
raise ValueError, 'The portal_type should not be None'
- self.portal_types.constructContent( type_name = portal_type
- , container = self
- , id = id
- ) # **kw) removed due to CMF bug
+ self.portal_types.constructContent(type_name=portal_type,
+ container=self,
+ id=id,
+ ) # **kw) removed due to CMF bug
new_instance = self[id]
if kw is not None:
new_instance._edit(force_update=1, **kw)
@@ -817,13 +771,11 @@
new_instance.immediateReindexObject()
return new_instance
-
def log(self,description,content):
"""
- Put a log message
+ Put a log message
"""
LOG(description, 0, content)
-
Globals.InitializeClass(ERP5Site)
@@ -839,48 +791,54 @@
product_path = package_home(globals())
return os.path.join(product_path, 'bootstrap')
-
- def create( self
- , parent
- , id
- , create_userfolder
- , erp5_sql_connection_type
- , erp5_sql_connection_string
- , erp5_sql_deferred_connection_type
- , erp5_sql_deferred_connection_string
- , cmf_activity_sql_connection_type
- , cmf_activity_sql_connection_string
- , create_activities=1
- , reindex=1
- , **kw
- ):
+ def create(self,
+ parent,
+ id,
+ create_userfolder,
+ erp5_sql_connection_type,
+ erp5_sql_connection_string,
+ erp5_sql_deferred_connection_type,
+ erp5_sql_deferred_connection_string,
+ cmf_activity_sql_connection_type,
+ cmf_activity_sql_connection_string,
+ create_activities=1,
+ reindex=1,
+ **kw):
LOG('setupTools, create', 0, kw)
id = str(id)
portal = self.klass(id=id)
- # Make sure reindex will not be called until business templates will be installed
+ # Make sure reindex will not be called until business templates
+ # will be installed
setattr(portal, 'isIndexable', 0)
parent._setObject(id, portal)
# Return the fully wrapped object.
p = parent.this()._getOb(id)
- p._setProperty('erp5_sql_connection_type', erp5_sql_connection_type, 'string')
- p._setProperty('erp5_sql_connection_string', erp5_sql_connection_string, 'string')
- p._setProperty('erp5_sql_deferred_connection_type', erp5_sql_deferred_connection_type, 'string')
- p._setProperty('erp5_sql_deferred_connection_string', erp5_sql_deferred_connection_string, 'string')
- p._setProperty('cmf_activity_sql_connection_type', cmf_activity_sql_connection_type, 'string')
- p._setProperty('cmf_activity_sql_connection_string', cmf_activity_sql_connection_string, 'string')
+ p._setProperty('erp5_sql_connection_type',
+ erp5_sql_connection_type, 'string')
+ p._setProperty('erp5_sql_connection_string',
+ erp5_sql_connection_string, 'string')
+ p._setProperty('erp5_sql_deferred_connection_type',
+ erp5_sql_deferred_connection_type, 'string')
+ p._setProperty('erp5_sql_deferred_connection_string',
+ erp5_sql_deferred_connection_string, 'string')
+ p._setProperty('cmf_activity_sql_connection_type',
+ cmf_activity_sql_connection_type, 'string')
+ p._setProperty('cmf_activity_sql_connection_string',
+ cmf_activity_sql_connection_string, 'string')
+ # XXX hardcoded charset
p._setProperty('management_page_charset', 'UTF-8', 'string')
- self.setup(p, create_userfolder, create_activities=create_activities, **kw)
+ self.setup(p, create_userfolder,
+ create_activities=create_activities, **kw)
return p
-
def setupLastTools(self, p, **kw):
"""
- Set up finals tools
- We want to set the activity tool only at the end to
- make sure that we do not put un the queue the full reindexation
+ Set up finals tools
+ We want to set the activity tool only at the end to
+ make sure that we do not put un the queue the full reindexation
"""
# Add Activity Tool
- if kw.get('create_activities', 0):
+ if kw.has_key('create_activities') and int(kw['create_activities'])==1:
if not p.hasObject('portal_activities'):
addTool = p.manage_addProduct['CMFActivity'].manage_addTool
addTool('CMF Activity Tool', None) # Allow user to select active/passive
@@ -893,10 +851,9 @@
keep = 0
portal_activities.manageClearActivities(keep=keep)
-
def setupTemplateTool(self, p, **kw):
"""
- Setup the Template Tool. Security must be set strictly.
+ Setup the Template Tool. Security must be set strictly.
"""
addTool = p.manage_addProduct['ERP5'].manage_addTool
addTool('ERP5 Template Tool', None)
@@ -905,20 +862,22 @@
for permission in permission_list:
context.manage_permission(permission, ['Manager'], 0)
-
def setupTools(self, p,**kw):
"""
- Set up initial tools
+ Set up initial tools.
"""
if not 'portal_actions' in p.objectIds():
PortalGenerator.setupTools(self, p)
- # It is better to remove portal_catalog which is ZCatalog as soon as possible,
- # because the API is not the completely same as ERP5Catalog, and ZCatalog is
- # useless for ERP5 after all.
+ # It is better to remove portal_catalog
+ # which is ZCatalog as soon as possible,
+ # because the API is not the completely same as ERP5Catalog,
+ # and ZCatalog is useless for ERP5 after all.
update = kw.get('update', 0)
portal_catalog = getToolByName(p, 'portal_catalog', None)
- if portal_catalog is not None and portal_catalog.meta_type != 'ZSQLCatalog' and not update:
+ if portal_catalog is not None and \
+ portal_catalog.meta_type != 'ZSQLCatalog' and \
+ not update:
p._delObject('portal_catalog')
# Add CMF Report Tool
@@ -950,14 +909,14 @@
addTool('ERP5 Order Tool', None)
if not p.hasObject('portal_tests'):
addTool('ERP5 Test Tool', None)
-
+
try:
addTool = p.manage_addProduct['ERP5Subversion'].manage_addTool
if not p.hasObject('portal_subversion'):
addTool('ERP5 Subversion Tool', None)
except AttributeError:
pass
-
+
# Add ERP5Type Tools
addTool = p.manage_addProduct['ERP5Type'].manage_addTool
if not p.hasObject('portal_classes'):
@@ -970,41 +929,54 @@
addTool = p.manage_addProduct['ERP5Catalog'].manage_addTool
if not p.hasObject('portal_catalog'):
addTool('ERP5 Catalog', None)
-
# Add Default SQL connection
if p.erp5_sql_connection_type == 'Z MySQL Database Connection':
if not p.hasObject('erp5_sql_connection'):
- addSQLConnection = p.manage_addProduct['ZMySQLDA'].manage_addZMySQLConnection
- addSQLConnection('erp5_sql_connection', 'ERP5 SQL Server Connection', p.erp5_sql_connection_string)
+ addSQLConnection = p.manage_addProduct['ZMySQLDA'].\
+ manage_addZMySQLConnection
+ addSQLConnection('erp5_sql_connection',
+ 'ERP5 SQL Server Connection',
+ p.erp5_sql_connection_string)
elif p.erp5_sql_connection_type == 'Z Gadfly':
pass
# Add Deferred SQL Connections
- if p.erp5_sql_deferred_connection_type == 'Z MySQL Deferred Database Connection':
+ if p.erp5_sql_deferred_connection_type == \
+ 'Z MySQL Deferred Database Connection':
if not p.hasObject('erp5_sql_deferred_connection'):
- addSQLConnection = p.manage_addProduct['ZMySQLDDA'].manage_addZMySQLDeferredConnection
- addSQLConnection('erp5_sql_deferred_connection', 'ERP5 SQL Server Deferred Connection', p.erp5_sql_deferred_connection_string)
+ addSQLConnection = p.manage_addProduct['ZMySQLDDA'].\
+ manage_addZMySQLDeferredConnection
+ addSQLConnection('erp5_sql_deferred_connection',
+ 'ERP5 SQL Server Deferred Connection',
+ p.erp5_sql_deferred_connection_string)
elif p.erp5_sql_deferred_connection_type == 'Z Gadfly':
pass
# Add Activity SQL Connections
if p.cmf_activity_sql_connection_type == 'Z MySQL Database Connection':
if not p.hasObject('cmf_activity_sql_connection'):
- addSQLConnection = p.manage_addProduct['ZMySQLDA'].manage_addZMySQLConnection
- addSQLConnection('cmf_activity_sql_connection', 'CMF Activity SQL Server Connection', p.cmf_activity_sql_connection_string)
+ addSQLConnection = p.manage_addProduct['ZMySQLDA'].\
+ manage_addZMySQLConnection
+ addSQLConnection('cmf_activity_sql_connection',
+ 'CMF Activity SQL Server Connection',
+ p.cmf_activity_sql_connection_string)
elif p.cmf_activity_sql_connection_type == 'Z Gadfly':
pass
-
+
portal_catalog = getToolByName(p, 'portal_catalog')
- if not portal_catalog.getSQLCatalog('erp5_mysql') and not update:
+ if (not update) and (not portal_catalog.getSQLCatalog('erp5_mysql')):
+ # Add a default SQL Catalog
portal_catalog.addDefaultSQLMethods()
- portal_catalog.manage_catalogClear()
- # TODO: Replace previous lines with the commented below (not working actually).
- # The goal is to delete addDefaultSQLMethods() method and duplicated zsql
- # method from /ERP5Catalog/sql/mysql_erp5.
- # addSQLCatalog = portal_catalog.manage_addProduct['ZSQLCatalog'].manage_addSQLCatalog
- # addSQLCatalog('erp5_mysql', '')
- # portal_catalog.default_sql_catalog_id = 'erp5_mysql'
+ if (p.erp5_sql_connection_type is not None):
+ portal_catalog.manage_catalogClear()
+ # TODO: Replace previous lines with the commented below
+ # (not working actually).
+ # The goal is to delete addDefaultSQLMethods() method and duplicated zsql
+ # method from /ERP5Catalog/sql/mysql_erp5.
+ #addSQLCatalog = portal_catalog.manage_addProduct['ZSQLCatalog']\
+ # .manage_addSQLCatalog
+ #addSQLCatalog('erp5_mysql', '')
+ #portal_catalog.default_sql_catalog_id = 'erp5_mysql'
# Add ERP5Form Tools
addTool = p.manage_addProduct['ERP5Form'].manage_addTool
@@ -1023,21 +995,21 @@
addLocalizer = p.manage_addProduct['Localizer'].manage_addLocalizer
addLocalizer('', ('en',))
localizer = getToolByName(p, 'Localizer')
- addMessageCatalog = localizer.manage_addProduct['Localizer'].manage_addMessageCatalog
+ addMessageCatalog = localizer.manage_addProduct['Localizer']\
+ .manage_addMessageCatalog
if 'erp5_ui' not in localizer.objectIds():
if 'default' in localizer.objectIds():
localizer.manage_delObjects('default')
- addMessageCatalog('default' , 'ERP5 Localized Messages' , ('en',))
- addMessageCatalog('erp5_ui' , 'ERP5 Localized Interface', ('en',))
- addMessageCatalog('erp5_content', 'ERP5 Localized Content' , ('en',))
+ addMessageCatalog('default', 'ERP5 Localized Messages', ('en',))
+ addMessageCatalog('erp5_ui', 'ERP5 Localized Interface', ('en',))
+ addMessageCatalog('erp5_content', 'ERP5 Localized Content', ('en',))
def setupMembersFolder(self, p):
"""
- ERP5 is not a CMS
+ ERP5 is not a CMS
"""
pass
-
def setupDefaultSkins(self, p):
from Products.CMFCore.DirectoryView import addDirectoryViews
@@ -1049,7 +1021,7 @@
ps.manage_addProduct['OFSP'].manage_addFolder(id='external_method')
ps.manage_addProduct['OFSP'].manage_addFolder(id='custom')
# Set the 'custom' layer a high priority, so it remains the first
- # layer when installing new business templates
+ # layer when installing new business templates
ps['custom'].manage_addProperty(
"business_template_skin_layer_priority", 100.0, "float")
ps.addSkinSelection('View', 'custom, external_method, activity, '
@@ -1066,29 +1038,30 @@
make_default=0)
p.setupCurrentSkin()
-
def setupWorkflow(self, p):
"""
- Set up workflows for business templates
+ Set up workflows for business templates
"""
tool = getToolByName(p, 'portal_workflow', None)
if tool is None:
return
- for wf_id in ('business_template_building_workflow', 'business_template_installation_workflow'):
+ for wf_id in ('business_template_building_workflow',
+ 'business_template_installation_workflow'):
if wf_id in tool.objectIds():
tool.manage_delObjects([wf_id])
bootstrap_dir = self.getBootstrapDirectory()
- business_template_building_workflow = os.path.join(bootstrap_dir,
- 'business_template_building_workflow.xml')
+ business_template_building_workflow = os.path.join(
+ bootstrap_dir,
+ 'business_template_building_workflow.xml')
tool._importObjectFromFile(business_template_building_workflow)
- business_template_installation_workflow = os.path.join(bootstrap_dir,
- 'business_template_installation_workflow.xml')
+ business_template_installation_workflow = os.path.join(
+ bootstrap_dir,
+ 'business_template_installation_workflow.xml')
tool._importObjectFromFile(business_template_installation_workflow)
tool.setChainForPortalTypes( ( 'Business Template', ),
- ( 'business_template_building_workflow',
- 'business_template_installation_workflow' ) )
+ ( 'business_template_building_workflow',
+ 'business_template_installation_workflow' ) )
pass
-
def setupIndex(self, p, **kw):
# Make sure all tools and folders have been indexed
@@ -1097,11 +1070,13 @@
skins_tool = getToolByName(p, 'portal_skins', None)
if skins_tool is None:
return
- setattr(p, 'isIndexable', 1)
- portal_catalog = p.portal_catalog
- portal_catalog.manage_catalogClear()
- skins_tool["erp5_core"].ERP5Site_reindexAll()
-
+ # When no SQL connection was define on the site,
+ # we don't want to make it crash
+ if p.erp5_sql_connection_type is not None:
+ setattr(p, 'isIndexable', 1)
+ portal_catalog = p.portal_catalog
+ portal_catalog.manage_catalogClear()
+ skins_tool["erp5_core"].ERP5Site_reindexAll()
def setupUserFolder(self, p):
# We use if possible ERP5Security, then NuxUserGroups
@@ -1149,7 +1124,6 @@
# Standard user folder
PortalGenerator.setupUserFolder(self, p)
-
def setupPermissions(self, p):
permission_dict = {
'Access Transient Objects' : ('Manager', 'Anonymous'),
@@ -1172,7 +1146,8 @@
'Set own password' : ('Manager',),
'Set own properties' : ('Manager', 'Member'),
'Undo changes' : ('Manager', 'Owner'),
- 'View' : ('Manager', 'Member', 'Owner', 'Anonymous'),
+ 'View' : ('Manager', 'Member',
+ 'Owner', 'Anonymous'),
'View management screens' : ('Manager', 'Owner')
}
@@ -1181,7 +1156,6 @@
role_list = permission_dict.get(name, ('Manager',))
p.manage_permission(name, roles=role_list, acquire=0)
-
def setup(self, p, create_userfolder, **kw):
update = kw.get('update', 0)
@@ -1191,7 +1165,7 @@
self.setupMailHost(p)
if int(create_userfolder) != 0 and not p.hasObject('acl_users'):
- self.setupUserFolder(p)
+ self.setupUserFolder(p)
if not p.hasObject('cookie_authentication'):
self.setupCookieAuth(p)
@@ -1226,10 +1200,9 @@
if not update:
self.setupIndex(p, **kw)
-
def setupBusinessTemplate(self,p):
"""
- Install the portal_type of Business Template
+ Install the portal_type of Business Template
"""
tool = getToolByName(p, 'portal_types', None)
if tool is None:
@@ -1239,10 +1212,9 @@
ti = apply(ERP5TypeInformation, (), t)
tool._setObject(t['id'], ti)
-
- def setupERP5Core(self, p, **kw):
- """
- Install the core part of ERP5
+ def setupERP5Core(self,p,**kw):
+ """
+ Install the core part of ERP5
"""
template_tool = getToolByName(p, 'portal_templates', None)
if template_tool is None:
More information about the Erp5-report
mailing list