Checking for data problems in Lino Welfare

Lino Welfare offers some functionality for managing data problems.

See also checkdata : High-level integrity tests.

Data checkers available in Lino Welfare

In the web interface you can select Explorer ‣ System ‣ Data checkers to see a table of all available checkers.

>>> rt.show(checkdata.Checkers, language="en")
... 
======================================= ===================================================
 value                                   text
--------------------------------------- ---------------------------------------------------
 accounting.VoucherChecker               Check integrity of ledger vouchers
 addresses.AddressOwnerChecker           Check for missing or non-primary address records
 aids.ConfirmationChecker                Check for confirmations outside of granted period
 beid.SSINChecker                        Check for invalid SSINs
 cal.ConflictingEventsChecker            Check for conflicting calendar entries
 cal.EventGuestChecker                   Entries without participants
 cal.LongEntryChecker                    Too long-lasting calendar entries
 cal.ObsoleteEventTypeChecker            Obsolete generated calendar entries
 coachings.ClientCoachingsChecker        Check coachings
 countries.PlaceChecker                  Check data of geographical places
 dupable_clients.SimilarClientsChecker   Check for similar clients
 finan.FinancialVoucherItemChecker       Check for invalid account/partner combination
 isip.OverlappingContractsChecker        Check for overlapping contracts
 linod.SystemTaskChecker                 Check for missing system tasks
 memo.PreviewableChecker                 Check for previewables needing update
 mixins.DupableChecker                   Check for missing phonetic words
 printing.CachedPrintableChecker         Check for missing target files
 sepa.BankAccountChecker                 Check for partner mismatches in bank accounts
 system.BleachChecker                    Find unbleached html content
 uploads.UploadChecker                   Check metadata of upload files
 uploads.UploadsFolderChecker            Find orphaned files in uploads folder
======================================= ===================================================

Showing all problems

The demo database deliberately contains some data problems. In the web interface you can select Explorer ‣ System ‣ Data problem messages to see them. Note that messages are in the language of the responsible user.

>>> rt.show(checkdata.AllMessages, language="en", max_width=40)
... 
+------------------+------------------------------------------+------------------------------------------+------------------------------------------+
| Responsible      | Database object                          | Message text                             | Checker                                  |
+==================+==========================================+==========================================+==========================================+
| Robin Rood       | `Christi Himmelfahrt (29.05.2014) <…>`__ | Event conflicts with 4 other events.     | cal.ConflictingEventsChecker (Check for  |
|                  |                                          |                                          | conflicting calendar entries)            |
+------------------+------------------------------------------+------------------------------------------+------------------------------------------+
| Robin Rood       | `Pfingsten (09.06.2014) <…>`__           | Event conflicts with 3 other events.     | cal.ConflictingEventsChecker (Check for  |
|                  |                                          |                                          | conflicting calendar entries)            |
+------------------+------------------------------------------+------------------------------------------+------------------------------------------+
| Romain Raffault  | `Internal meetings with client           | Event conflicts with Pfingsten           | cal.ConflictingEventsChecker (Check for  |
|                  | (09.06.2014 09:00) <…>`__                | (09.06.2014).                            | conflicting calendar entries)            |
+------------------+------------------------------------------+------------------------------------------+------------------------------------------+
| Alicia Allmanns  | `Consultation (29.05.2014 08:30) <…>`__  | Event conflicts with Christi Himmelfahrt | cal.ConflictingEventsChecker (Check for  |
|                  |                                          | (29.05.2014).                            | conflicting calendar entries)            |
+------------------+------------------------------------------+------------------------------------------+------------------------------------------+
| Alicia Allmanns  | `Petit-déjeuner (09.06.2014 09:40)       | Event conflicts with Pfingsten           | cal.ConflictingEventsChecker (Check for  |
|                  | <…>`__                                   | (09.06.2014).                            | conflicting calendar entries)            |
+------------------+------------------------------------------+------------------------------------------+------------------------------------------+
| Hubert Huppertz  | `Versammlung (09.06.2014 10:20) with     | Event conflicts with Pfingsten           | cal.ConflictingEventsChecker (Check for  |
|                  | LEFFIN Josefine (145*) <…>`__            | (09.06.2014).                            | conflicting calendar entries)            |
+------------------+------------------------------------------+------------------------------------------+------------------------------------------+
| Patrick Paraneau | `Absent for private reasons (29.05.2014) | Event conflicts with Christi Himmelfahrt | cal.ConflictingEventsChecker (Check for  |
|                  | <…>`__                                   | (29.05.2014).                            | conflicting calendar entries)            |
+------------------+------------------------------------------+------------------------------------------+------------------------------------------+
|                  | `DEMEULENAERE Dorothée (122) <…>`__      | Ähnliche Klienten: DOBBELSTEIN-          | dupable_clients.SimilarClientsChecker    |
|                  |                                          | DEMEULENAERE Dorothée (123*)             | (Check for similar clients)              |
+------------------+------------------------------------------+------------------------------------------+------------------------------------------+
| Hubert Huppertz  | `DOBBELSTEIN-DEMEULENAERE Dorothée       | Ähnliche Klienten: DEMEULENAERE Dorothée | dupable_clients.SimilarClientsChecker    |
|                  | (123*) <…>`__                            | (122)                                    | (Check for similar clients)              |
+------------------+------------------------------------------+------------------------------------------+------------------------------------------+
| Mélanie Mélard   | `DOBBELSTEIN Dorothée (124) <…>`__       | Ähnliche Klienten: DOBBELSTEIN-          | dupable_clients.SimilarClientsChecker    |
|                  |                                          | DEMEULENAERE Dorothée (123*)             | (Check for similar clients)              |
+------------------+------------------------------------------+------------------------------------------+------------------------------------------+
| Caroline Carnol  | `FAYMONVILLE Luc (130*) <…>`__           | Begleitet und veraltet zugleich.         | coachings.ClientCoachingsChecker (Check  |
|                  |                                          |                                          | coachings)                               |
+------------------+------------------------------------------+------------------------------------------+------------------------------------------+
| Caroline Carnol  | `DENON Denis (180*) <…>`__               | Begleitet und veraltet zugleich.         | coachings.ClientCoachingsChecker (Check  |
|                  |                                          |                                          | coachings)                               |
+------------------+------------------------------------------+------------------------------------------+------------------------------------------+

Filtering problem messages

The user can set the table parameters e.g. to see only problems of a given type (“checker”). The following snippet simulates the situation of selecting the SimilarClientsChecker.

>>> Checkers = rt.models.checkdata.Checkers
>>> rt.show(checkdata.AllMessages, language="en",
...     param_values=dict(checker=Checkers.get_by_value(
...     'dupable_clients.SimilarClientsChecker')))
... 
================= ================================================== ============================================================= ===================================================================
 Responsible       Database object                                    Message text                                                  Checker
----------------- -------------------------------------------------- ------------------------------------------------------------- -------------------------------------------------------------------
                   `DEMEULENAERE Dorothée (122) <…>`__                Ähnliche Klienten: DOBBELSTEIN-DEMEULENAERE Dorothée (123*)   dupable_clients.SimilarClientsChecker (Check for similar clients)
 Hubert Huppertz   `DOBBELSTEIN-DEMEULENAERE Dorothée (123*) <…>`__   Ähnliche Klienten: DEMEULENAERE Dorothée (122)                dupable_clients.SimilarClientsChecker (Check for similar clients)
 Mélanie Mélard    `DOBBELSTEIN Dorothée (124) <…>`__                 Ähnliche Klienten: DOBBELSTEIN-DEMEULENAERE Dorothée (123*)   dupable_clients.SimilarClientsChecker (Check for similar clients)
================= ================================================== ============================================================= ===================================================================

My data problems

In the web interface you can select Office ‣ Data problem messages assigned to me to see a list of all data problem messages assigned to you.

>>> show_menu_path(checkdata.MyMessages, language="en")
Office --> Data problem messages assigned to me
>>> print(rt.login('melanie').user.language)
fr
>>> rt.login('melanie').show(checkdata.MyMessages, language="en")
... 
================ ==================================== ============================================================= ===================================================================
 Responsible      Database object                      Message text                                                  Checker
---------------- ------------------------------------ ------------------------------------------------------------- -------------------------------------------------------------------
 Mélanie Mélard   `DOBBELSTEIN Dorothée (124) <…>`__   Ähnliche Klienten: DOBBELSTEIN-DEMEULENAERE Dorothée (123*)   dupable_clients.SimilarClientsChecker (Check for similar clients)
================ ==================================== ============================================================= ===================================================================