Tuesday, March 10, 2015

Upgrade in Châtelet

The show_in_bbar attribute of CheckinVisitor, ReceiveVisitor and CheckoutVisitor were not yet correct. I must define them individually on each action, not on NotifyingAction.

Checkin and pull in Châtelet.

About migrations

Mahmoud and I are working together on #38. The “startup signal, apps and plugins” topic seems more or less done, but the other big topic are migrations.

Until now all our customers are perfectly happy without migrations because Lino has Python fixtures.

But as it seems, in Django 1.9 the “legacy method of syncing apps without migrations will be removed, and migrations will become compulsory for all apps.”, so Django will force us some day to live with them.

The challenge with migrations are dependencies between plugins. Before reading on, make sure that you have read Django’s section about Dependencies. But this is just the beginning. Lino adds quite some cool stuff for doing plugin inheritance. And of course we unfortunately can’t expect the Django developers to care about this cool stuff.

What is that cool stuff and what problems will it cause for migrations?

Cannot resolve keyword ‘dupable_words’ into field

The new version in CPAS de Châtelet had a bug which caused an Internal Server Error when trying to (manually) create a new partner.

This came only when lino.modlib.dupable_partners is hidden.

Wrote a test case test_dupable_hidden in lino_welfare.projects.chatelet.tests which would have detected this bug.

Checkin and pull in Châtelet.

Un(e) Bénéficiaire avec ce NISS existe déjà

They got the following error message in Châtelet:

ValidationError
{'national_id': [u'Un(e) B\xe9n\xe9ficiaire avec ce NISS existe d\xe9j\xe0.']}

It occurred while reading an eid card.

This message is generated by Django when a unique constraint of a field is violated.

Added some conditions in lino_welfare.projects.std.tests.test_beid in order to try to reproduce it.

Added some optimizations in the StrangeClients table:

  • new options invalid_coaching and similar_persons because we want to be able to ignore these cases.
  • overlapping_contracts now defaults to False because the default values should be least power consuling.
  • The default value for client_state is now empty because we want to see warnings about a wrongly formatted national_id for non-coached clients.