From 6c0eae95562f834ae4c98cec1f84c30500d424fa Mon Sep 17 00:00:00 2001 From: Arnaud Fontaine <arnaud.fontaine@nexedi.com> Date: Wed, 12 Feb 2014 19:43:22 +0900 Subject: [PATCH] erp5_forge: Migrate Glossary Extension to ZODB Property Sheets and Portal Types as classes. Using the legacy API was broken and this is also to prepare DocumentationHelper and ClassTool removal. --- .../extension.erp5.Glossary.py | 47 ++++++++++--------- bt5/erp5_forge/bt/change_log | 3 ++ bt5/erp5_forge/bt/revision | 2 +- 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/bt5/erp5_forge/ExtensionTemplateItem/portal_components/extension.erp5.Glossary.py b/bt5/erp5_forge/ExtensionTemplateItem/portal_components/extension.erp5.Glossary.py index 773d2a839f..bdcf921103 100644 --- a/bt5/erp5_forge/ExtensionTemplateItem/portal_components/extension.erp5.Glossary.py +++ b/bt5/erp5_forge/ExtensionTemplateItem/portal_components/extension.erp5.Glossary.py @@ -3,34 +3,35 @@ def setPortalTypeDescription(self, portal_type, description): 'description', description) def getPropertySheetList(self, portal_type): - from Products.ERP5Type.DocumentationHelper.PortalTypeDocumentationHelper \ - import PortalTypeDocumentationHelper - portal = self.getPortalObject() - portal_type_uri = '%s/portal_types/%s' % (portal.getUrl(), - portal_type) - return PortalTypeDocumentationHelper(portal_type_uri).__of__( - portal).getPropertySheetList() + import erp5.portal_type + return (getattr(self.getPortalObject().portal_types, portal_type).getTypePropertySheetList() + + list(getattr(erp5.portal_type, portal_type).property_sheets)) def getPropertySheetAttributeList(self, name): - from Products.ERP5Type import PropertySheet - class_ = PropertySheet.__dict__.get(name, None) + portal = self.getPortalObject() + try: + property_sheet_obj = portal.portal_property_sheets[name] + except KeyError: + return [] + result = [] - for i in getattr(class_, '_properties', ()): - if 'acquired_property_id' in i: - continue - # we want to get only normal property. - result.append((i['id'], i.get('description', ''))) - for i in getattr(class_, '_categories', ()): - try: - result.append((i, self.getPortalObject().portal_categories[i].getDescription())) - except KeyError: - result.append((i, '')) - except TypeError: - # if category is Expression(...), TypeError raises - pass - return result + # We don't want Acquired Property nor Category TALES Expression + for property_obj in property_sheet_obj.contentValues(portal_type=('Category Property', + 'Standard Property')): + reference = property_obj.getReference('') + description = '' + if property_obj.getPortalType() == 'Category Property': + try: + description = portal.portal_categories[reference].getDescription('') + except KeyError: + pass + else: + description = property_obj.getDescription('') + result.append((reference, description)) + + return result def getActionTitleListFromAllActionProvider(portal): result = [] diff --git a/bt5/erp5_forge/bt/change_log b/bt5/erp5_forge/bt/change_log index e8d2ce188a..cf3a2d8965 100644 --- a/bt5/erp5_forge/bt/change_log +++ b/bt5/erp5_forge/bt/change_log @@ -1,3 +1,6 @@ +2014-02-19 Arnaud Fontaine +* Migrate Glossary Extension to ZODB Property Sheets and Portal Types as classes. + 2013-09-03 arnaud.fontaine * ZODB Components: Workflow History must always be kept, so avoid an extra step for developers. diff --git a/bt5/erp5_forge/bt/revision b/bt5/erp5_forge/bt/revision index 9251196df3..3ea66354ca 100644 --- a/bt5/erp5_forge/bt/revision +++ b/bt5/erp5_forge/bt/revision @@ -1 +1 @@ -678 \ No newline at end of file +679 \ No newline at end of file -- 2.30.9