# Monday, May 8, 2017¶

## Topics¶

I had an interesting article in my inbox and though that I would quickly note this in my internal blog in Lino Amici. Basically it worked, but it caused a little chain reaction.

• I opened #1819 (Handling blog entries copied from Internet) and worked on it. Blog entries are now bleached. And then how to display them in the dashboard.

I boldy changed the behaviour of lino.utils.soup.truncate_comment(): truncate_comment now never returns more than one paragraph. I am not sure whether this is what we really want, but let’s observe it.

• While I was there I did #1650 (Multiple topics per ticket). This required #1822 (New feature : Writable virtual foreignkey fields)

I checked in my work though some tests are still failing.

## UnicodeError¶

#1825 was a subtle one. In order to understand it, I had to patch my /usr/lib/python2.7/StringIO.py. I replaced:

if self.buflist:
self.buf += ''.join(self.buflist)


by this:

if self.buflist:
try:
self.buf += ''.join(self.buflist)
except UnicodeError:
raise Exception("LS 20170508 Failed to join %r" % self.buflist)


It was happening in Lino Care, a network of people who care. There was this code:

>>> def show_votes(pk):
...     obj = tickets.Ticket.objects.get(pk=pk)
...     print(obj)


The problem disappeared when I raplaced the third line by:

...     print(str(obj))


But why? No good explanation so far. I guess that it has to do with the python_2_unicode_compatible hack.

NB while exploring this, I replaced several instances of “from builtins import str” to “import six ; str = six.text_type”. I believe that this is better because certain third-party libraries don’t know about the newstr class (#1751).

## Optimizations in Amici¶

• GuestsByEvent
• memo commands “household” and “company”.