:date: 2017-06-08

======================
Thursday, June 8, 2017
======================

Yesterday Tonis and I had a four hour XP session, the second one of a
series which will continue today. Yesterday we learned:

- Google does *not* support CalDAV, therefore we decided to *abandon*
  :ticket:`1201` (Lino as a calendar server).
- The only really end-user friendly integratad solution would be to
  write connectors to the leading proprietary APIs (Google, Apple,
  Facebook, Microsoft...) in order to make Lino collaborate with these
  systems. I am not currently willing to invest into such projects.
  
- The only generic solution is therefore to work on the mobile
  interface.
  
- Before diving into a solution based on ExtJS modern (until now we
  have classic), Tonis and I started to study whether the existing
  bootstrap ui can evolve into a usable responsive read-write UI.

Concretely we started by removing
:attr:`lino.core.site.Site.default_user` from
:mod:`lino_book.projects.bs3` and by reactivating the login
functionality around :xfile:`bootstrap3/base.html`. I actualy once
started this a long time ago but abandoned for reasons I don't
remember in detail.
At the end of the session Tonis and I agreed that it was definitively a very interesting exercise and that we would continue on this tomorrow.


With Tonis
==========

This is what Tonis and I did today.

Lino's authenticate method doesn't return a User instance. Which
indicates that it was a silly API and that Django is better. And
anyway it is time for :ticket:`1329` (Use a bit more of Django's
authentication).  So we decided to dive even deeper into the
bogs. Lots of code changes:

- :mod:`lino.core.auth` is no longer used. We use
  `django.contrib.auth` instead.

- Rename :mod:`lino.modlib.users` to :mod:`lino.modlib.users` in order
  to become more close to Django.

- Renamed User.profile to User.user_type because (1) Django complained
  about it (after renaming users to auth) and (2) it had to be done some
  day anyway.

- Upgraded Django 1.9.13 to 1.11.2

Unfortunately we had to do a few changes to Django. Lino master
currently doesn't work with an unpatched Django.  We must present
these changes tomorrow to the Django community and submit a pull
request for https://code.djangoproject.com/ticket/20313


>>> from lino import startup
>>> startup('lino_book.projects.team.settings.demo')
>>> from lino.api.shell import *
>>> dd.plugins.tickets.site_model


I checked in above changes because Hamza should see them (ext6 is
concerned). It is 9pm and I am ready for bed. But it is fantastic: I
got `inv prep` to pass on all projects! Yes, the test suites are still
mostly failing because we didn't yet change "users" to "auth" in the
`.rst` files. But that's for tomorrow.

I added the patch required to Django 1.11rc1:
https://code.djangoproject.com/attachment/ticket/20313/patch-20313-20170608.diff