Hello Chris,

thanks for your answer! But just kicking out all line breaks is a little 
harsh, since in my case the description is mostly a few lines long with 2 
or 3 paragraphs. And I had the problem already solved by this procedure and 
the call as described in my question:

def str_replace(string, replacement_dict):
>     if not isinstance(string, str):
>         string = str(string)
>     pattern = re.compile('|'.join([re.escape(k) for k in 
> list(replacement_dict.keys())]), re.M)
>     return pattern.sub(lambda x: replacement_dict[x.group(0)], string)
>

And this solution worked very well with python 2.7, having even line breaks 
in link titles. Then I moved to python 3.6 and the problem was there. Thus, 
I think, that the XML sanitizer under Python 3.6 is the problem, since it 
can't handle 

Do you have any other ideas?

Best regards
Clemens


On Wednesday, February 12, 2020 at 12:08:17 PM UTC+1, Christian Varas wrote:
>
> I had an issue with line breaks too, I remove lie breaks like this with 
> python 3.7
>
> some_string = some_string.replace(“\n”, ””).replace(“\r”, ””)
>
> XML(some_string, sanitize=True)
>
> Cheers
> Chris
>
> El El mié, 12 de feb. de 2020 a la(s) 04:37, Clemens <
> clemens...@claret-clover.de <javascript:>> escribió:
>
>> Hello!
>>
>> In my web2py app I’m processing a list of items, where the user can click 
>> on a link for each item to select this. An item has an UUID, a title and a 
>> description. For a better orientation the item description is also 
>> displayed as link title. To prevent injections by and to escape tags in the 
>> description I’m using the XML sanitizer as follows:
>>
>> A(this_item.title, \
>>   callback = URL('item', 'select', \
>>                  vars=dict(uuid=this_item.uuid), user_signature=True), \
>>   _title=XML(str_replace(this_item.description, {'\r\n':'&#13;', 
>> '<':'&#60;', '>':'&#62;'}), sanitize=True))
>>
>> Using Python 2.7 everything was fine. Since I have switched to Python 3.6 
>> I have the following problem. When the description contains line breaks the 
>> sanitizer is not working anymore. For example the following string produces 
>> by my str_replace routine is fine to be sanitized by the XML helper under 
>> Python 2.7 but not under Python 3.6:
>>
>> Header&#13;&#13;Line1&#13;Line2&#13;Line3
>>>
>>
>> Sanitizing line breaks escaped by &#13; is the problem with Python 3 (but 
>> not with Python 2). Everything else is no problem for the XML helper to 
>> sanitize (e.g. less than or greater than, I need these, since if there is 
>> no description it is generated as <no description>).
>>
>> How can be line breaks sanitized by the XML helper running web2py under 
>> Python3?
>>
>> Thanks for any support!
>>
>> Best regards Clemens
>> &#13;
>>
>> -- 
>> Resources:
>> - http://web2py.com
>> - http://web2py.com/book (Documentation)
>> - http://github.com/web2py/web2py (Source code)
>> - https://code.google.com/p/web2py/issues/list (Report Issues)
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "web2py-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to web...@googlegroups.com <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/web2py/319d22e0-d1be-452c-8c25-d1ec76df1a5e%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/web2py/319d22e0-d1be-452c-8c25-d1ec76df1a5e%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/64244a11-0964-4e44-9b75-e9d9e8d33f83%40googlegroups.com.

Reply via email to