Welcome | Get started | Dive | Contribute | Topics | Reference | Changes | More

coachings : Managing coachings

The lino_xl.lib.coachings plugin adds functionality for managing “coachings”. It is currently used in Lino Welfare only.


When a given site user engages as “coach” in regular, structured conversation with a given “client” during a given period.

(German “Begleitung”, French “intervention”)

For example in Lino Welfare that user is a social assistant.

coaching type

The “type” of a coaching. In Lino Welfare this is named a “Service”.

Can be used for expressing different types of responsibilities. For example in Lino Welfare they differentiate “General Social Service” “Integration Service” and “Debt mediation”.

Lines starting with >>> in this document are code snippets that get tested as part of our development workflow.

>>> import lino
>>> lino.startup('lino_book.projects.avanti1.settings')
>>> from lino.api.doctest import *


class lino_xl.lib.coachings.Coaching

Django model to represent a coaching.


Whether this coaching is primary. Enabling this field will automatically make the other coachings non-primary.

See The primary coach

class lino_xl.lib.coachings.Coachings

A table showing a set of coachings.

class lino_xl.lib.coachings.CoachingsByClient

The Coachings table in a clients detail.

class lino_xl.lib.coachings.CoachingsByUser


class lino_xl.lib.coachings.Coachable

Base class for coachable client. The model specified as client_model must implement this.

get_coachings(self, period=None, *args, **flt)

Return a queryset with the coachings of this client. If period is not None, it must be a tuple of two date objects. Any additional arguments are applied as filter of the queryset.


Return the one and only primary coach of this client (or None if there’s less or more than one).

setup_auto_event(self, evt)

Implements EventGenerator.setup_auto_event.

This implements the rule that suggested evaluation events should be for the currently responsible coach if the contract’s author no longer coaches that client. This is relevant if coach changes while contract is active.

The currently responsible coach is the user for which there is a coaching which has does_integ set to True..

Coaching types

class lino_xl.lib.coachings.CoachingType

Django model to represent a coaching.


Whether coachings of this type are to be considered as integration work.

This is used when generating calendar events for evaluation meetings (see lino_xl.lib.coaching.Coachable.setup_auto_event())

class lino_xl.lib.coachings.CoachingTypes

Coaching endings

class lino_xl.lib.coachings.CoachingEnding

A Coaching termination reason expresses why a coaching has been terminated.

class lino_xl.lib.coachings.CoachingEndings

A list of reasons expressing why a coaching was ended.


class lino_xl.lib.coachings.CoachingsUser

A user who has access to basic coachings functionality.

class lino_xl.lib.coachings.CoachingsStaff

A user who can configure coachings functionality.

class lino_xl.lib.coachings.ClientChecker
class lino_xl.lib.coachings.ClientCoachingsChecker

Coached clients should not be obsolete. Only coached clients should have active coachings.


The lino_xl.lib.coachings plugin injects the following fields into models of other plugins.

class users.User

The coaching type used for new coachings of this user.


Notify me when a coach has been assigned.

The primary coach

Every client should have a primary coach. This is the main responsible coach for that client.

Lino verifies that there’s at most one primary coach per client. When you check the primary field of one coaching, Lino automatically unchecks it on any other coachings of that client.

Reality is even a bit more complicated: when multiple_primary_coachings is set to True, the uniqueness of the primary coaching is no longer just per client but per client and coaching type. As a result you can have multiple primary coachings per client.