diff --git a/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/Base_getImplicitPredecessorValueList.xml b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/Base_getImplicitPredecessorValueList.xml index 55982598b6c08ff7a23c446491852e022b64d4a1..b491bf5e932bdacea577c33e394753e1efd50467 100644 --- a/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/Base_getImplicitPredecessorValueList.xml +++ b/bt5/erp5_dms/SkinTemplateItem/portal_skins/erp5_dms/Base_getImplicitPredecessorValueList.xml @@ -58,7 +58,8 @@ and make sure we get latest/most relevant version\n should be reimplemented in SQL some sunny day.\n """\n reference = context.getReference()\n -if reference is None:\n +if reference is None or not context.isSearchableReference():\n + # empty or not following format preference\n return ()\n \n return context.Base_zGetImplicitPredecessorValueList(reference=reference)\n diff --git a/bt5/erp5_dms/bt/revision b/bt5/erp5_dms/bt/revision index d3e6945eeb4ad9f9d50e40f56e8bf296a1eb75b7..a01282d290da2dac893fae4f9abfe13a76eab050 100644 --- a/bt5/erp5_dms/bt/revision +++ b/bt5/erp5_dms/bt/revision @@ -1 +1 @@ -1269 \ No newline at end of file +1270 \ No newline at end of file diff --git a/product/ERP5/Document/Document.py b/product/ERP5/Document/Document.py index 3609d270a13b23eaa0bab4bc869c14217d2b96f2..58f64a1b3af058f88edd3335761f3fa27c2aeb17 100644 --- a/product/ERP5/Document/Document.py +++ b/product/ERP5/Document/Document.py @@ -317,6 +317,22 @@ class Document(DocumentExtensibleTraversableMixin, XMLObject, UrlMixin, preferences. """ text = self.getSearchableText() # XXX getSearchableText or asText ? + return self._getSearchableReferenceList(text) + + security.declareProtected(Permissions.AccessContentsInformation, 'getSearchableReferenceList') + def isSearchableReference(self): + """ + Determine if current document's reference can be used for searching - i.e. follows + certain defined at system level preferences format. + """ + reference = self.getReference() + return len(self._getSearchableReferenceList(reference)) + + def _getSearchableReferenceList(self, text): + """ + Extract all reference alike strings from text using for that a + regular expression defined at system level preferences. + """ regexp = self.portal_preferences.getPreferredDocumentReferenceRegularExpression() try: rx_search = re.compile(regexp) @@ -334,7 +350,7 @@ class Document(DocumentExtensibleTraversableMixin, XMLObject, UrlMixin, tmp[key] = None for group, group_item_tuple in tmp.keys(): result.append((group, dict(group_item_tuple))) - return result + return result security.declareProtected(Permissions.AccessContentsInformation, 'getImplicitSuccessorValueList') def getImplicitSuccessorValueList(self):