From da2119cc1766b6a16d4349533c939202235164b7 Mon Sep 17 00:00:00 2001 From: Sebastien Robin <seb@nexedi.com> Date: Mon, 26 Jan 2004 10:30:15 +0000 Subject: [PATCH] no modification of cps is needed now git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@328 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5CPS/CPSCorePatch.py | 125 ++++++++++++++-------------- product/ERP5CPS/CPSDocumentPatch.py | 109 +++++++++++++++--------- 2 files changed, 131 insertions(+), 103 deletions(-) diff --git a/product/ERP5CPS/CPSCorePatch.py b/product/ERP5CPS/CPSCorePatch.py index 3472503148..d85bef1c55 100755 --- a/product/ERP5CPS/CPSCorePatch.py +++ b/product/ERP5CPS/CPSCorePatch.py @@ -34,7 +34,7 @@ from zLOG import LOG class PatchedProxyBase(ProxyBase): - security = ClassSecurityInfo() + security = ClassSecurityInfo() # Object attributes update method # security.declarePrivate( '_edit' ) @@ -48,68 +48,65 @@ class PatchedProxyBase(ProxyBase): # rpath = utool.getRelativeUrl(self) # px_tool._modifyProxy(self,rpath) - def manage_afterEdit(self): - """ - We have to notify the proxy tool we have modified - this object - """ - px_tool= getToolByName(self,'portal_proxies') - utool = getToolByName(self, 'portal_url') - rpath = utool.getRelativeUrl(self) - px_tool._modifyProxy(self,rpath) - - - - def _propertyMap(self): - """ - Returns fake property sheet - """ - property_sheet = [] - - #property_sheet += self._properties - - property_sheet += [ - { - 'id' : 'docid', - 'type' : 'string' - }, -# { 'id' : 'workflow_history', # XXX Added for ERP5 SyncML -# 'type' : 'pickle' -# }, - { - 'id' : 'default_language', - 'type' : 'string' - }, - { - 'id' : 'sync_language_revisions', # XXX we have to manage dict type - 'type' : 'dict' - } - ] - return tuple(property_sheet + list(getattr(self, '_local_properties', ()))) - - security.declareProtected(View, 'getSyncLanguageRevisions') - def getSyncLanguageRevisions(self): - """Get the mapping of language -> revision.""" - return self._language_revs.copy() - - security.declareProtected(View, 'setSyncLanguageRevisions') - def setSyncLanguageRevisions(self, dict): - """Set the mapping of language -> revision.""" - for lang in dict.keys(): - self.setLanguageRevision(lang,dict[lang]) - - security.declareProtected(View, 'getSyncRepoHistory') - def getSyncRepoHistory(self): - """Get the mapping of language -> revision.""" - return self._language_revs.copy() - - security.declareProtected(View, 'setSyncRepoHistory') - def setSyncRepoHistory(self, dict): - """Set the mapping of language -> revision.""" - repotool = getToolByName(self, 'portal_repository') - #repotool. - for lang in dict.keys(): - self.setLanguageRevision(lang,dict[lang]) + def manage_afterEdit(self): + """ + We have to notify the proxy tool we have modified + this object + """ + px_tool= getToolByName(self,'portal_proxies') + utool = getToolByName(self, 'portal_url') + rpath = utool.getRelativeUrl(self) + px_tool._modifyProxy(self,rpath) + + + + def _propertyMap(self): + """ + Returns fake property sheet + """ + property_sheet = [] + + #property_sheet += self._properties + + property_sheet += [ + { + 'id' : 'docid', + 'type' : 'string' + }, + { + 'id' : 'default_language', + 'type' : 'string' + }, + { + 'id' : 'sync_language_revisions', # XXX we have to manage dict type + 'type' : 'dict' + } + ] + return tuple(property_sheet + list(getattr(self, '_local_properties', ()))) + + security.declareProtected(View, 'getSyncLanguageRevisions') + def getSyncLanguageRevisions(self): + """Get the mapping of language -> revision.""" + return self._language_revs.copy() + + security.declareProtected(View, 'setSyncLanguageRevisions') + def setSyncLanguageRevisions(self, dict): + """Set the mapping of language -> revision.""" + for lang in dict.keys(): + self.setLanguageRevision(lang,dict[lang]) + + security.declareProtected(View, 'getSyncRepoHistory') + def getSyncRepoHistory(self): + """Get the mapping of language -> revision.""" + return self._language_revs.copy() + + security.declareProtected(View, 'setSyncRepoHistory') + def setSyncRepoHistory(self, dict): + """Set the mapping of language -> revision.""" + repotool = getToolByName(self, 'portal_repository') + #repotool. + for lang in dict.keys(): + self.setLanguageRevision(lang,dict[lang]) ProxyBase.getPath = Base.getPath @@ -123,4 +120,4 @@ ProxyBase.setSyncLanguageRevisions = PatchedProxyBase.setSyncLanguageRevisions ProxyBase.getSyncRepoHistory = PatchedProxyBase.getSyncRepoHistory ProxyBase.setSyncRepoHistory = PatchedProxyBase.setSyncRepoHistory -ProxyFolder.asXML = Folder.asXML \ No newline at end of file +ProxyFolder.asXML = Folder.asXML diff --git a/product/ERP5CPS/CPSDocumentPatch.py b/product/ERP5CPS/CPSDocumentPatch.py index 12e2c6945f..e4b84cc0e2 100755 --- a/product/ERP5CPS/CPSDocumentPatch.py +++ b/product/ERP5CPS/CPSDocumentPatch.py @@ -19,49 +19,80 @@ from Products.CPSDocument.CPSDocument import CPSDocument from Products.CPSSchemas.BasicFields import CPSImageField, CPSFileField, CPSDateTimeField from Products.ERP5Type.Base import Base +from Products.ERP5Type.Utils import UpperCase +from Acquisition import aq_base, aq_inner +from AccessControl import ClassSecurityInfo +from Products.CMFCore.CMFCorePermissions import View class PatchedCPSDocument(CPSDocument): - def _propertyMap(self): - """ - Returns fake property sheet - """ - property_sheet = [] - for schema in self.getTypeInfo().getSchemas(): - for field in schema.objectValues(): - #LOG('testjp',0,'field: %s' % str(field)) - f_type = '' - for p in field._properties: - if p['id'] == 'default': - f_type = p['type'] - if isinstance(field,CPSImageField): - #f_type = 'image' - f_type = 'pickle' - if isinstance(field,CPSDateTimeField): - f_type = 'date' - if isinstance(field,CPSFileField): - #f_type = 'file' - f_type = 'pickle' - if isinstance(field,CPSDocument): - #f_type = 'document' - f_type = 'pickle' - prop_id = schema.getIdUnprefixed(field.id) - if prop_id in ('file_text','content','attachedFile', - 'attachedFile_html','attachedFile_text', 'content'): - f_type = 'pickle' # this should be string, but this strings - # do so bad xml - #if not (prop_id in ('file_text','content','attachedFile','attachedFile_html','attachedFile_text')): - #if not (prop_id in ('content',)): - if 1: - property_sheet.append( - { - 'id' : prop_id, - 'type' : f_type - } - ) - return tuple(property_sheet + list(getattr(self, '_local_properties', ()))) + security = ClassSecurityInfo() + def _propertyMap(self): + """ + Returns fake property sheet + """ + property_sheet = [] + for schema in self.getTypeInfo().getSchemas(): + for field in schema.objectValues(): + #LOG('testjp',0,'field: %s' % str(field)) + f_type = '' + for p in field._properties: + if p['id'] == 'default': + f_type = p['type'] + if isinstance(field,CPSImageField): + #f_type = 'image' + f_type = 'object' + if isinstance(field,CPSDateTimeField): + f_type = 'date' + if isinstance(field,CPSFileField): + #f_type = 'file' + f_type = 'object' + if isinstance(field,CPSDocument): + #f_type = 'document' + f_type = 'object' + prop_id = schema.getIdUnprefixed(field.id) + if prop_id in ('file_text','content','attachedFile', + 'attachedFile_html','attachedFile_text', 'content'): + f_type = 'object' # this should be string, but this strings + # do so bad xml + #if not (prop_id in ('file_text','content','attachedFile','attachedFile_html','attachedFile_text')): + #if not (prop_id in ('content',)): + if 1: + property_sheet.append( + { + 'id' : prop_id, + 'type' : f_type + } + ) + return tuple(property_sheet + list(getattr(self, '_local_properties', ()))) + + + security.declareProtected( View, 'getProperty' ) + def getProperty(self, key, d=None): + """ + Previous Name: getValue + + Generic accessor. Calls the real accessor + """ + accessor_name = 'get' + UpperCase(key) + aq_self = aq_base(self) + if hasattr(aq_self, accessor_name): + method = getattr(self, accessor_name) + return method() + prop_type = self.getPropertyType(key) # XXX added by Seb + if prop_type in ('object',): + if hasattr(aq_self, key): + value = getattr(aq_self, key) + value = aq_base(value) + return value + return None + elif hasattr(aq_self, key): + value = getattr(aq_self, key) + if callable(value): value = value() + return value + +CPSDocument.getProperty = PatchedCPSDocument.getProperty CPSDocument._propertyMap = PatchedCPSDocument._propertyMap -CPSDocument.getProperty = Base.getProperty CPSDocument.setProperty = Base.setProperty CPSDocument.asXML = Base.asXML -- 2.30.9