Thursday, March 12, 2015

Last adaptions in test suites after yesterday’s changes.

UnicodeEncodeError

I had a UnicodeEncodeError when running the show command:

$ python manage.py show pcsw.StrangeClients

Traceback (most recent call last):
  ...
  File ".../lino/core/renderer.py", line 308, in show_request
    print(ar.to_rst(*args, **kw))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 1712: ordinal not in range(128)

But Lino was innocent. It was because the terminal or the system was poorly configured. See https://wiki.python.org/moin/PrintFails

My ~/.bashrc contained:

export LANG=en_GB.UTF-8

and I solved it by changing this to:

export LANG=C.UTF-8

after invoking locale -a in order to see which locales are available:

$ locale -a
C
C.UTF-8
POSIX
fr_BE.utf8

Another workaround was to set PYTHONIOENCODING to “utf-8”.

Repairable data

Tonight I had the inspiration for solving a series of subtle but disturbing problems:

  • pcsw.Clients with an SSIN which actually is valid, but wrongly formatted
  • some Partners have a single address, but which is not marked as primary
  • some Calendar events should have their client as guest, but they don’t have

The solution is a new module lino.mixins.repairable and a management command repairdata.

The first item of above list is already implemented, tested by lino_welfare.projects.std.tests.test_beid. I also worked on the documentation of lino.utils.ssin. The other two items are for tomorrow…