Skip to content

Commit 2e65c2c

Browse files
authored
Merge pull request #8208 from 4teamwork/es/TI-3331-fix-pdf-dossier-tasks-view
Fix generating task listing pdf for tasks having special chars in the response comments
2 parents ad1f156 + e8c8194 commit 2e65c2c

File tree

3 files changed

+38
-3
lines changed

3 files changed

+38
-3
lines changed

changes/TI-3331.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix generating task listing pdf for tasks having special chars in the response comments. [elioschmutz]

opengever/latex/listing.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@
1717
from zope.component import adapter
1818
from zope.interface import implementer
1919
from zope.interface import Interface
20-
import re
2120

2221

23-
STRIP_HTML_RE = re.compile('<[^<]+?>')
22+
def transform_html_to_text(value):
23+
transformer = api.portal.get_tool('portal_transforms')
24+
return transformer.convert('html_to_text', value or '').getData()
2425

2526

2627
class Column(object):
@@ -331,7 +332,7 @@ def get_columns(self):
331332
Column('text',
332333
_('label_description', default='Description'),
333334
'50%',
334-
lambda item: STRIP_HTML_RE.sub('', item.text if item.text else "")),
335+
lambda item: transform_html_to_text(item.text if item.text else "")),
335336
]
336337

337338

opengever/latex/tests/test_dossiertasks.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,39 @@ def test_dossier_tasks_history(self, browser):
125125
layout = DefaultLayout(dossier, dossier.REQUEST, PDFBuilder())
126126
dossiertasks = getMultiAdapter((dossier, dossier.REQUEST, layout),
127127
ILaTeXView)
128+
128129
tasks_data = dossiertasks.get_render_arguments()['task_data_list']
129130
self.assertEqual(1, len(tasks_data))
130131
self.assertIn("response text", tasks_data[0]['history'])
132+
133+
@browsing
134+
def test_dossier_tasks_history_with_html_response(self, browser):
135+
repository = create(Builder('repository_root')
136+
.titled(u'Repository'))
137+
dossier = create(Builder('dossier')
138+
.titled(u'Anfr\xf6gen 2015')
139+
.within(repository)
140+
.having(responsible=self.user.userid))
141+
142+
browser.login().visit(dossier)
143+
factoriesmenu.add('Task')
144+
browser.fill({'Title': 'Task title',
145+
'Task type': 'To comment'})
146+
147+
form = browser.find_form_by_field('Responsible')
148+
form.find_widget('Responsible').fill(TEST_USER_ID)
149+
browser.find('Save').click()
150+
151+
browser.open('http://nohost/plone/repository/dossier-1/task-1')
152+
browser.click_on("Resolve")
153+
browser.fill({'Response': u'<p>Eine &amp; Aufgabe</p>'})
154+
browser.click_on("Save")
155+
156+
with provide_dossier_task_layer(dossier.REQUEST):
157+
layout = DefaultLayout(dossier, dossier.REQUEST, PDFBuilder())
158+
dossiertasks = getMultiAdapter((dossier, dossier.REQUEST, layout),
159+
ILaTeXView)
160+
161+
tasks_data = dossiertasks.get_render_arguments()['task_data_list']
162+
self.assertEqual(1, len(tasks_data))
163+
self.assertIn("Eine \\& Aufgabe", tasks_data[0]['history'])

0 commit comments

Comments
 (0)