=======================
Sunday, October 5, 2014
=======================

Final sprint for ticket :srcref:`docs/tickets/122` : repaired the test suite
of :ref:`welfare` which was broken after recent changes.
A last change to :meth:`lino_welafre.migrate.Migrator.migrate_from_1_1_16`.

Data migration on the production site.
Seems that everything went well.

Discovered and fixed a minor JavaScript-releated bug:
`ExtRenderer.action_call_on_instance` generated the action call to
:class:`welfare.reception.CreateCoachingVisit` as::

  Lino.pcsw.Coachings.create_visit(...)

which was wrong, it must be::

  Lino.pcsw.Coachings.create_visit.run(...)

Discovered and fixed an AttributeError "'NoneType' object has no
attribute 'model'" when trying to select `body_template` on an AidType
with empty `confirmation_type` (e.g. "Erstattung").

The `excerpts/base.body.html` had a nonsense default title block
``{{this}}`` which renderd to "Unprinted Excerpt #7". What we want
there is rather ``{{this.excerpt_type}}``.

Presence certificate (`presence_certificate.body.html` template) did
not print correctly.

- The "We certify that ..." block was missing

- New method :meth:`ml.addresses.Address.living_at_text` used in both
  :meth:`welfare.aids.Confirmation.confirmation_address`
  and the `presence_certificate.body.html` template::

    {{obj.client.get_primary_address().living_at_text()}}

- New method :func:`dd.strftime`.

- :class:`VirtualGetter <lino.code.fields.VirtualGetter>` now has a 
  ``__getattr__`` method which makes it possible to write::

     {{obj.client.national_id}}

- Should the default value for the `nominative` argument to
  :func:`lino.mixins.human.get_salutation` be `True` or `False`?