Coachings

What is a coaching?

A coaching without client is not valid:

>>> cli = rt.models.pcsw.Client.objects.get(id=120)
>>> Coaching = rt.models.coachings.Coaching
>>> Coaching().full_clean()  
Traceback (most recent call last):
...
ValidationError: {'client': [u'Dieses Feld darf nicht null sein.']}

A coaching without user is not very useful but theoretically possible:

>>> obj = Coaching(client=cli)
>>> print(obj)
Begleitung CHANTRAINE Marc (120*)
>>> obj.full_clean()  

ClientStates

The list of possible choices for the Client.client_state field. Default configuration is as follows:

>>> rt.show('clients.ClientStates', language="de")
====== ========== =========== =============
 Wert   name       Text        Button text
------ ---------- ----------- -------------
 10     newcomer   Neuantrag
 20     refused    Abgelehnt
 30     coached    Begleitet
 50     former     Ehemalig
====== ========== =========== =============
>>> rt.show('clients.ClientStates', language="fr")
====== ========== ============ =============
 Wert   name       Text         Button text
------ ---------- ------------ -------------
 10     newcomer   Nouveau
 20     refused    Refusé
 30     coached    Accompagné
 50     former     Ancien
====== ========== ============ =============

Any person who asks to meet with an agent for consultation will be registered into the database. At the beginning the client is a newcomer. When the client introduces an application for a specific help, they can become refused or coached. When a coached client has no more active coaching, or when a newcomer does not come back after their first visit, then somebody with appropriate rights should mark the client as former.

>>> from lino_xl.lib.coachings.roles import CoachingsStaff
>>> username = 'rolf'
>>> rt.login(username).user.user_type.has_required_roles([CoachingsStaff])
True
>>> from lino_xl.lib.clients.choicelists import ClientStates
>>> list(ClientStates.required_roles)
[<class 'lino_xl.lib.contacts.roles.ContactsStaff'>]
>>> url = 'api/clients/ClientStates'
>>> url = settings.SITE.buildurl(url, fmt='json')
>>> test_client.force_login(rt.login(username).user)
>>> response = test_client.get(url, REMOTE_USER=username)
>>> result = check_json_result(response, None, "GET %s for user %s" % (url, username))
>>> result['count']
4