Saturday, March 11, 2017

I added explanations to my yesterday’s blog entry (because of #1564). I optimized the output of the inv ct command.

Avanti

I continued on Avanti (#1547). For this ticket I have my todo list in German (see below) which I will show to the customer when I am done. I leave yesterday’s list as it was yesterday evening and copied it here before continuing on it.

Avanti required an internal API change in lino.core.store.StoreField.get_value_text() with consequences to ExtJS 6 front end as well: a ForeignKey store field now always uses lino.core.model.Model.get_choices_text() for rendering its value. That’s because we need the requesting user in order to decide whether to show the client’s name or not. First usage example is lino_avanti.lib.avanti.models.Client as documented in Activities in Lino Avanti. The changes in Calendar functionality in Lino Voga, countries : Countries and cities and Using action requests were a surprise to myself, and a nice confirmation that this API change makes sense.

Avanti Aufgabenliste

DONE:

  • Coachings raus. Nur ein einziges Feld “Primärbegleiter”. Und die Sozis im ÖSHZ kommen als Klientenkontakte rein. Das Panel für Klientenkontakte muss wohl größer werden. Client now inherts from UserAuthored. New table MyClients.

  • New plugin lino_xl.lib.trends.

  • Summary panel für EventsByCourse. New method EventGenerator.get_date_formatter()

  • Dashboard aktivieren.

  • Neue Aufgaben müssen Status “todo” haben.

  • Koordinator darf keine Namen der Teilnehmer sehen, lediglich Nummern und Wohnort.

TODO:

  • Auditor ist wie der Koordinator, nur dass er zusätzlich die Berichte als Spreadsheets runterladen kann: Klienten, Kurse, Teilnehmer, Anwesenheiten.

  • Im Detail eines Termins fehlt der Klient. Und die action buttons. Und assigned_to ist zu viel.

  • Termine generieren pro Klient : da kommt nichts.

  • Terminstatus “Stattgefunden” verweigern, wenn es noch Teilnehmer gibt, die noch auf “Eingeladen” stehen.

  • Kursleiter und Sozialarbeiter sollen keine Termine generieren können.

  • Teilnehmerliste drucken können.

  • Diverse Übersetzungen

  • Text “Tags” im Feld “Wann” eines Kurses wenn Mo, Di, Do und Fr.

  • Feldbezeichnungen cal.Task : “Zahlungsziel” -> “Frist”. “Autor” -> “Verantwortlicher”

  • Klick in Event.overview zeigt alle Termine an diesem Tag. Unnötig.

  • Produktionsbetrieb aufnehmen (Demo-Modus abschalten und fiktive Daten löschen)

  • Hide field Course.end_date

  • Hide fields Course.every_unit and Course.every

  • Hide num_places from Enrolments.insert_layout

Zu klären:

  • Jeder darf nur seine Kommentare sehen. Aber sind Kommentare überhaupt das Richtige? Jedenfalls brauchen wir keine Diskussionen. Zu klären, wenn Johanna mir eine Liste mit Beispielen “Entwicklungsverlauf” geschickt hat. Kommentar-Arten fehlt im Menü Konfigurierung.

  • (?) EnrolmentStates : Bestanden / Nicht bestanden.

  • Neues Feld “Aufenthaltstitel” pro Klient. Wie war das noch mal?

Chatter

I worked on #1331: I read https://realpython.com/blog/python/getting-started-with-django-channels/ and tried to get the notifications running at least on my machine.

I played around:

$ sudo apt install redis-server
$ pip install redis
>>> import redis
>>> rs = redis.Redis("localhost")
>>> lst = rs.client_list()
>>> print(lst[0]['addr'])
127.0.0.1:49226

I removed the automagic configuration for redis because that was a bit too complex. I also optimized usage of lino.core.site.Site.get_used_libs() so that the Site ‣ About window indicates whether channels is installed and whether use_websockets is True.

I started a new specs document about notify: Notification framework, a new sample application “Lino Chatter” in the Lino Book (lino_book.projects.chatter), and for this application a new plugin lino_xl.lib.groups.

TODO:

  • currently the desktop notifications do not work, even on a development server. The JS console says WebSocket connection to 'ws://127.0.0.1:8000/lino' failed: Error during WebSocket handshake: net::ERR_CONNECTION_RESET

  • MyMemberships instead of MyGroups. Add a field Membership.mail_mode

  • write documentation