patrols (Patrols main plugin)

A tested document

This is a tested document. The following instructions are used for initialization:

>>> import lino
>>> lino.startup('lino_patrols.projects.patrols1.settings')
>>> from lino.api.doctest import *
>>> rt.show(patrols.PatrolsPlanner, max_width=20, limit=7)
+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
| Date                 | 10 (Bot-MdP)         | 20 (BM-FP-TB-MT-W)   | 30 (BM-FP-VP-B)      | 40 (Bayehon)         | 50 (Warche)          | 60 (Noire Eau)       | 70 (Vélo)            | 99 (etc)             |
+======================+======================+======================+======================+======================+======================+======================+======================+======================+
| `Saturday, 28 March  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  |
| 2026 <…>`__          | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  |
+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
| `Sunday, 29 March    | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  |
| 2026 <…>`__          | Alfons Ausdemwald    | Dorothée             | Gregory Groteclaes   | Jan Jousten `13:00   | Marie-Louise Meier   | Alfons Ausdemwald    | Dorothée             | Gregory Groteclaes   |
|                      | `13:00 <…>`__ (1/3)  | Dobbelstein-         | `13:00 <…>`__ (1/3)  | <…>`__ (1/3)         | `13:00 <…>`__ (1/3)  | `13:00 <…>`__ (1/3)  | Dobbelstein-         | `13:00 <…>`__ (1/3)  |
|                      | Jan Jousten          | Demeulenaere `13:00  | Alfons Ausdemwald    | Dorothée             | Gregory Groteclaes   | Jan Jousten          | Demeulenaere `13:00  | Alfons Ausdemwald    |
|                      |                      | <…>`__ (1/3) Marie-  |                      | Dobbelstein-         |                      |                      | <…>`__ (1/3) Marie-  |                      |
|                      |                      | Louise Meier         |                      | Demeulenaere         |                      |                      | Louise Meier         |                      |
+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
| `Monday, 30 March    | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  |
| 2026 <…>`__          | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  |
+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
| `Tuesday, 31 March   | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  |
| 2026 <…>`__ `Drapeau | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  |
| rouge <…>`__         |                      |                      |                      |                      |                      |                      |                      |                      |
+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
| `Wednesday, 1 April  | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  | `10:00 <…>`__ (1/3)  |
| 2026 <…>`__          | Laurent Bastiaensen  | Daniel Emonts `13:00 | Henri Hilgers `13:00 | Karl Kaivers `13:00  | Michael Mießen       | Laurent Bastiaensen  | Daniel Emonts `13:00 | Henri Hilgers `13:00 |
|                      | `13:00 <…>`__ (1/3)  | <…>`__ (1/3) Michael | <…>`__ (1/3) Laurent | <…>`__ (1/3) Daniel  | `13:00 <…>`__ (1/3)  | `13:00 <…>`__ (1/3)  | <…>`__ (1/3) Michael | <…>`__ (1/3) Laurent |
|                      | Karl Kaivers         | Mießen               | Bastiaensen          | Emonts               | Henri Hilgers        | Karl Kaivers         | Mießen               | Bastiaensen          |
+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
| `Thursday, 2 April   | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  |
| 2026 <…>`__          | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  |
+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
| `Friday, 3 April     | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  | `10:00 <…>`__ (0/3)  |
| 2026 <…>`__ `Good    | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  | `13:00 <…>`__ (0/3)  |
| Friday <…>`__        |                      |                      |                      |                      |                      |                      |                      |                      |
+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+----------------------+
>>> rt.show(patrols.PatrolsPlanner, display_mode="list", limit=7)
...
- [Saturday, 28 March 2026](…)


- [Sunday, 29 March 2026](…)


- [Monday, 30 March 2026](…)


- [Tuesday, 31 March 2026](…)
  [Drapeau rouge](…)


- [Wednesday, 1 April 2026](…)


- [Thursday, 2 April 2026](…)


- [Friday, 3 April 2026](…)
  [Good Friday](…)