diff --git a/product/ERP5/ERP5Site.py b/product/ERP5/ERP5Site.py index 4397132b5c7ea8e348ea53f8a63cd6f70e4d5897..c32f3e33a6bcc0c5000ef9ea5f760e2ea802378e 100755 --- a/product/ERP5/ERP5Site.py +++ b/product/ERP5/ERP5Site.py @@ -284,6 +284,19 @@ class ERP5Site ( CMFSite, FolderMixIn ): 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. + """ + def getCategoryList(group): + category_list = [] + for bc in self.portal_categories.objectValues(): + if group in bc.getCategoryTypeList(): + category_list.append(bc.getId()) + return tuple(category_list) + + getCategoryList = CachingMethod(getCategoryList, id=('_getPortalGroupedCategoryList', group), cache_duration=3600) + return getCategoryList(group) + security.declareProtected(Permissions.AccessContentsInformation, 'getPortalResourceTypeList') def getPortalResourceTypeList(self): """ @@ -339,7 +352,7 @@ class ERP5Site ( CMFSite, FolderMixIn ): """ Return variation base categories. """ - return self._getPortalConfiguration('portal_variation_base_category_list') + return self._getPortalGroupedCategoryList('variation') or self._getPortalConfiguration('portal_variation_base_category_list') security.declareProtected(Permissions.AccessContentsInformation, 'getPortalOptionBaseCategoryList') @@ -347,7 +360,7 @@ class ERP5Site ( CMFSite, FolderMixIn ): """ Return option base categories. """ - return self._getPortalConfiguration('portal_option_base_category_list') + return self._getPortalGroupedCategoryList('option') or self._getPortalConfiguration('portal_option_base_category_list') security.declareProtected(Permissions.AccessContentsInformation, 'getPortalInvoiceMovementTypeList') def getPortalInvoiceMovementTypeList(self): @@ -494,27 +507,29 @@ class ERP5Site ( CMFSite, FolderMixIn ): """ Return column base categories. """ - return self._getPortalConfiguration('portal_column_base_category_list') + return self._getPortalGroupedCategoryList('column') or self._getPortalConfiguration('portal_column_base_category_list') security.declareProtected(Permissions.AccessContentsInformation, 'getPortalLineBaseCategoryList') def getPortalLineBaseCategoryList(self): """ Return line base categories. """ - return self._getPortalConfiguration('portal_line_base_category_list') + return self._getPortalGroupedCategoryList('line') or self._getPortalConfiguration('portal_line_base_category_list') security.declareProtected(Permissions.AccessContentsInformation, 'getPortalTabBaseCategoryList') def getPortalTabBaseCategoryList(self): """ Return tab base categories. """ - return self._getPortalConfiguration('portal_tab_base_category_list') + 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) """ - return self._getPortalConfiguration('portal_default_gap_root') + 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) : """ @@ -526,11 +541,7 @@ class ERP5Site ( CMFSite, FolderMixIn ): """ Return List of category values to generate security groups. """ - category_tuple = self._getPortalConfiguration('portal_assignment_base_category_list') - category_list = [] - if category_tuple not in (None, '', (), []): - category_list = [ x for x in category_tuple] - return category_list + return self._getPortalGroupedCategoryList('assignment') or self._getPortalConfiguration('portal_assignment_base_category_list') security.declareProtected(Permissions.AccessContentsInformation, 'getDefaultModuleId') def getDefaultModuleId(self, portal_type):