:date: 2019-07-16
======================
Tuesday, July 16, 2019
======================
My first day at the ajapaik developer camp 2019 in Nõva. Kimmo, Märt, Joel,
Vahur and Katrin started already yesterday. The camp lasts until Thursday.
I will work on :ticket:`3123` (Authentication issues in ajapaik).
What is django-allauth?
=======================
First I had to learn the following.
Ajapaik uses `django-allauth
`__ while in Lino we use
`python-social-auth `__.
I read `an interesting discussion on reddit
`__
about the difference. The opening question is "In the last years the standard
recommendation for Social Authentication in Django has been django-allauth.
However now that python-social-auth and the corresponding Django implementation
social-app-django are under active development again I would like to know if
anyone has more experience with it."
Some interesting answers:
None of them are perfect. Django-allauth is cool unless you need OpenID
Connect or something else non-trivial, then you'll have to dig it out and
implement it yourself or navigate the sprawling forest of forks..
It seems that Django-Allauth is lacking integration with
Django-REST-Framework, while Python Social Auth has a library which integrates
authentication for REST API later.
Installing a development environment
=====================================
There are some problems related to authentication. Mostly irritating or wrong
error messages when users try to sign in using some edge case situation.
But how can I see the problem?
A nice thing that the ajapaik project now uses Docker to provide a development
environment.
Kimmo's cheat sheet for installing Ajapaik docker locally. (my current steps +
i will add also secrets; OS: Ubuntu 18.04)::
$ git clone https://github.com/Ajapaik/ajapaik-web.git
$ get checkout WIP-xxx
$ cd ajapaik-web
$ mkdir docker/solr/data
$ chmod a+w docker/solr/data
$ cp ajapaik/settings/local.py.example ajapaik/settings/local.py
$ cp ajapaik/ajapaik/client_secrets.json.example ajapaik/ajapaik/client_secrets.json
$ sudo docker-compose up --build
At this point I had to first install Docker correctly: "sudo apt purge docker",
then add the docker repository to apt sources and "sudo apt install docker-ce".
Thanks to `this `__.
Then the docker container had a failure during installation of `dlib
`__.
It was a Segmentation Fault during cmake::
/tmp/pip-install-6ijdxix3/dlib/dlib/global_optimization/../matrix/matrix_la.h:1187:56:
internal compiler error: Segmentation fault
There were warnings about an obsolete pip version, so I tried
inserting "pip install -U pip". The ajapaik project uses several Dockerfiles,
the file docker/dlib/Dockerfile contains multiple FROM statement (a feature
called `multi-stage builds
`__).
So it wasn't evident to understand which Dockerfile was being processed. I
tried several times, including after clearing the docker cache::
$ sudo docker image prune -a
$ sudo docker container prune
$ sudo docker volume prune
$ sudo docker system prune -a
But the old pip version wasn't the culprit.
I noticed that I get the same error when I simply try "pip install dlib" in a
terminal on my machine.
It worked once after installing all the system packages described `on this
`__
page by Adrian Rosebrock on January 22, 2018::
$ sudo apt-get install build-essential cmake
$ sudo apt-get install libopenblas-dev liblapack-dev
$ sudo apt-get install libx11-dev libgtk-3-dev
$ sudo apt-get install python python-dev python-pip
$ sudo apt-get install python3 python3-dev python3-pip
But then it turned out that it worked because I also had restarted my notebook
after above step, and because I had not yet started PyCharm. PyCharm was the
culprit. It is very hungry for memory. I have only 8 MB of RAM after all. I
did several more tests and I close this issue with the assumption that "pip
install dlib" fails when other memory-hungr software is running, e.g. PyCharm
and Thunderbird.
In the waiting times I read the docker documentation. I learned that
docker-compose runs the container described by the Dockerfile and connects it
to the outside world as described in the docker-compose.yml file. The
``--build`` options causes it to build the image when needed.
The ajapaik project uses a `solr `__
service.
https://www.pyimagesearch.com/2018/01/22/install-dlib-easy-complete-guide/
Optimizing the face recognition feature
=======================================
After a brainstorming with Vahur and some surfing and digging (e.g. `here
`__),
I suggest the following changes:
Add a new table "Persons" (name, gender, birth_date, death_date, wikicommons_id, ...)
Add a field FaceRecognitionRectangle.person (nullable FK to Person table).
Add a field Photo.author_id (nullable FK to Person table).
Write a script (admin command) which creates one Person for each Album for
which there is at least one FaceRecognitionRectangle.
Add a field User.person_id (nullable FK to Person table). Users can link
their account to a known person in their preferences.
What is the difference between subject_consensus and subject_ai_guess