Monday, October 14, 2019

This weekend I have been working on the Developer Guide, trying to answer Amber’s questions. It is getting better but there is still much to do.

Standup meeting

Ivo, Tonis and I.

We had a brainstorming session about how Ivo and Amber should contribute. Should we give them write access and let them push directly to master? I updated the How to submit a pull request page. This weekend I read a joke on Reddit about pushing to master which I now mention on this page.

I would like Tonis to test his changes for callback under a multi-process nginx as well. So we had a test session for getlino : use it to simulate a production server on a contributor environment (another use case yet to be documented). Together we experienced the aha effect of getting it running almost out of the box.

This week Tonis will try to take over the following tasks :

  • Review the Developer and the Contributor Guides so that it becomes useful for newbies like Amber and Ivo. For example people are still falling into a “void space” when they finally managed to install their Lino environment. Not sure whether it makes sense to start with the Django tutorial.

  • Some more things to change in getlino (a quick list out of my head):

    • as suggested by Amber: make backup of files before overwriting them

    • as suggested by Amber: in a developer environment the value for host_name of a new site must be “localhost” and not “first.localhost”.

    • sqlite database name should be “first.db” not just “first”.

    • sqlite db file was not writable after installing a simulated production server.

    • Switch nginx back from single-process to multi, this is in the cookiecutter-startsite project {cookiecutter.prjname}/nginx/{cookiecutter.prjname}_uwsgi.ini.

    • The nginx config files created by getlino startsite are named PRJNAME/nginx/PRJNAME-something. No need to repeat the PRJNAME.

    • Should we stop having getlino use cookiecutter? Can’t we just use Jinja directly? Cookiecutter seems overkill and introduces useless complexity. E.g. each new parameter needs to be declared in the cookiecutter.json file although we don’t need Cookiecutter in interactive mode at all.

Before handing above worries over to Tonis I finished my changes to the Developer Guide and pushed them to master after the meeting.

inv bd failed in vilma and tera because their conf.py declared to require lino and lino_xl doctrees which are not yet configured on the new server. But actually these doctrees aren’t needed, so I removed the dependency.

Summary of dashboard tables in doctest

A doctest docs/specs/avanti/general.rst was failing because RecentComments is no longer empty. But it seems that the show_dashboard method (used in doctests) ignores the display_mode because here it shows the tabular view while it should show the summary. The web interface correctly shows the summary.

Indeed that method didn’t show the summary of dashboard items if they were a master table. Now it does. This applies e.g. for lino.modlib.comments.RecentComments and lino.modlib.notify.MyMessages.

It took me some time to debug this. Also had to release a new version of etgen because in some cases lxml.html.fragments_fromstring() returns elements like STRONG or HTML or BODY.

doctest seems to have a problem when +NORMALIZE_WHITESPACE is set, and when the only differences are caused by spaces, and when +ELLIPSIS is being used and when the output contains Non-ASCII text.