workflows: exclude some evolution parts from full text search (#54401)

This commit is contained in:
Frédéric Péters 2021-05-29 09:15:26 +02:00
parent c868c778cd
commit d7214c5dab
5 changed files with 23 additions and 12 deletions

View File

@ -2131,12 +2131,7 @@ class SqlDataMixin(SqlMixin):
if evo.comment:
fts_strings.append(evo.comment)
for part in evo.parts or []:
if hasattr(part, 'view'):
if hasattr(part, 'to') and not self.is_for_current_user(part.to):
continue
html_part = part.view()
if html_part:
fts_strings.append(qommon.misc.html2text(html_part))
fts_strings.append(part.render_for_fts() if part.render_for_fts else '')
user = self.get_user()
if user:
fts_strings.append(user.get_display_name())

View File

@ -34,7 +34,7 @@ from wcs.qommon.form import (
VarnameWidget,
WidgetListAsTable,
)
from wcs.workflows import WorkflowStatusItem, register_item_class
from wcs.workflows import EvolutionPart, WorkflowStatusItem, register_item_class
class Mapping:
@ -129,9 +129,10 @@ class MappingsWidget(WidgetListAsTable):
self.value.sort(key=lambda mapping: self.ranks.get(str(mapping.field_id), 9999))
class LinkedFormdataEvolutionPart:
class LinkedFormdataEvolutionPart(EvolutionPart):
formdef_class = FormDef
attach_to_history = False
render_for_fts = None
def __init__(self, formdata, varname, attach_to_history):
self._formdef = formdata.formdef

View File

@ -21,6 +21,7 @@ from quixote.html import htmltext
from wcs.workflows import (
AttachmentEvolutionPart,
EvolutionPart,
WorkflowStatusItem,
register_item_class,
template_on_formdata,
@ -31,7 +32,7 @@ from ..qommon.form import SingleSelectWidget, TextWidget, WidgetList
from ..qommon.template import TemplateError
class JournalEvolutionPart:
class JournalEvolutionPart(EvolutionPart):
content = None
to = None

View File

@ -29,6 +29,7 @@ from quixote.html import TemplateIO, htmltext
from wcs.workflows import (
AbortActionException,
AttachmentEvolutionPart,
EvolutionPart,
WorkflowStatusItem,
register_item_class,
)
@ -49,10 +50,11 @@ from ..qommon.form import (
from ..qommon.misc import json_loads
class JournalWsCallErrorPart:
class JournalWsCallErrorPart(EvolutionPart):
content = None
data = None
label = None
render_for_fts = None
def __init__(self, summary, label=None, data=None):
self.summary = summary

View File

@ -184,12 +184,24 @@ class AttachmentsSubstitutionProxy:
raise AttributeError(name)
class AttachmentEvolutionPart:
class EvolutionPart:
to = None
view = None
def render_for_fts(self):
if not self.view or self.to:
# don't include parts with no content or restricted visibility
return ''
return misc.html2text(self.view() or '')
class AttachmentEvolutionPart(EvolutionPart):
orig_filename = None
base_filename = None
content_type = None
charset = None
varname = None
render_for_fts = None
storage = None
storage_attrs = None
@ -1144,7 +1156,7 @@ class WorkflowGlobalActionManualTrigger(WorkflowGlobalActionTrigger):
self._roles_init_with_xml('roles', elem, charset, include_id=include_id, snapshot=snapshot)
class WorkflowGlobalActionTimeoutTriggerMarker:
class WorkflowGlobalActionTimeoutTriggerMarker(EvolutionPart):
def __init__(self, timeout_id):
self.timeout_id = timeout_id