Tuesday, June 30, 2015

More testing and documentation after #173 (Class-based permission control (UserRoles)).

Analyzing some server reports after release in Eupen:

UnicodeEncodeError at /callbacks/140565193883152/yes

Diese Meldung ist eine Nebenwirkung der Mörderfalle. Sie kommt scheinbar, wenn jemand einen Auszug direkt manuell zu löschen versucht statt den Button “Cache löschen” des ausgedruckten Objekts zu verwenden.

Not sure whether the UnicodeDecodeError happens only on Python 2.6. This would be a reason to upgrade their Python to 2.7.

Or a reason for me to install Python 2.6 (thanks to d3vid) who asked about this on askubuntu.com:

$ sudo add-apt-repository ppa:fkrull/deadsnakes
$ sudo apt-get update
$ sudo apt-get install python2.6

Unfortunately I still could not reproduce my customer’s traceback. Maybe because they have Python 2.6.6 while above trick installed Python 2.6.9.

Setting ForeignKeys to NULL when deleting an object

Lino now supports ForeignKey fields with on_delete set to SET_NULL. First use case is the printed_by field of a Certifiable.

Until now, manually deleting a certifying excerpt failed with the message “Cannot delete Excerpt XYZ because 1 contract refers to it”. Okay, the workaround was easy: just use the clear_cache action on the certified object. But direct deletion should not fail just because of that nullable printed_by pointer.

BTW delete_veto_message message now includes the model’s verbose name because the unicode of a database object does not (and should not) mention it.

Three “quick wins”

“Im Bereich Person, den Namen des Datenfelds “Anrede” durch “Titel” ersetzen”

This would have been a quick one, but I discovered that this field was being rendered in an inconsistent way (sometimes before and sometimes after the salutation).

I moved it from Person to lino.mixins.human.Human, updated documentation and added some test cases in The Human mixin.