:date: 2020-07-23

=======================
Thursday, July 23, 2020
=======================

Now that the big move to Python 3 is finally done (after 20 months of stable
operation), weleup will become more active again.

Steve and I decided that :class:`lino_welfare.modlib.pcsw.IdentityChecker` is
useless and gets deactivated.

The :class:`lino_xl.lib.coachings.ClientChecker` mixin was duplicated
:mod:`lino_welfare.modlib.pcsw`.  Actually it should be named
``CoachableChecker``, but that's a minor naming inconsistency.

The checkdata message "Similar clients" appeared in English and not in the
language of the responsible user. That was because the checker did this::

  msg = _("Similar clients: {clients}").format(
      clients=', '.join([str(i) for i in lst]))
  yield (False, msg)

The correct way is like this::

  msg = format_lazy(_("Similar clients: {clients}"),
      clients=', '.join([str(i) for i in lst]))
  yield (False, msg)



After-release on weleup site
============================

First minor upgrade with above changes plus those since their code freeze
(20200720), including especially the reorganization into new package
:mod:`rstgen`.

Releases to PyPI with today's work: xl 20.7.7, welfare 20.7.2, weleup 20.7.1

Todo on the server::

  $ sudo service apache2 stop
  $ sudo service supervisor stop
  $ go prod
  $ ./make_snapshot.sh  # just in case
  $ a
  $ pip uninstall atelier
  $ pip install -U rstgen etgen lino lino_xl lino_welfare lino_weleup
  $ nano settings.py  # edit checkdata.responsible_user and title
  $ python manage.py run checkdata_delete_all.py
  $ python manage.py checkdata cal.ObsoleteEventTypeChecker --fix
  $ python manage.py checkdata
  $ sudo service apache2 start
  $ sudo service supervisor start

The :xfile:`checkdata_delete_all.py` script is a quick workaround for the
problem that Lino does not (yet) delete "invalid" checkdata messages (i.e.
messages with an unknown checker).

They had a traceback caused by :mod:`lino.modlib.ipdict`::

    File ".../lino/modlib/ipdict/models.py", line 46, in get_data_rows
      key=lambda x: x.last_request))
  TypeError: '<' not supported between instances of 'datetime.datetime' and 'NoneType'

I don't know how they managed to do this, but indeed it is obviously possible to
have an :class:`lino.modlib.ipdict.IPRecord` instance with :attr:`last_request`
being `None`.  Okay, let's sort them as if their last_request was
:attr:`lino.core.site.Site.startup_time`.  This is an untested theoretical bug
fix.

Changes in Lino (they don't get these today):

- New command-line option ``--prune`` for :manage:`checkdata`.

- Fix a bug that caused Lino to fail processing database rows with invalid
  choicelist value even when
  :attr:`lino.core.site.Site.strict_choicelist_values` was set to `False`.

- Fix a bug in :mod:`lino.modlib.ipdict` that caused Lino to not show the list
  of connections when one connection managed to have no :attr:`last_request`.
  Not reproduced and not tested.


Review dockerfiles for getlino
==============================

$ docker container rm mycont
$ docker run -it --name mycont debian_with_getlino /bin/bash
$ docker start mycont
$ docker attach mycont