From 89f60ee30934ac486a8f00c2d273c356020e1274 Mon Sep 17 00:00:00 2001
From: Nicolas ROCHE <nroche@entrouvert.com>
Date: Wed, 13 Jan 2021 12:14:23 +0100
Subject: [PATCH] maelis: adapt catalog labels (#50086)

---
 passerelle/apps/maelis/utils.py         |  27 ++-
 tests/data/maelis/child_activities.json | 230 ++++++++++++++----------
 2 files changed, 160 insertions(+), 97 deletions(-)

diff --git a/passerelle/apps/maelis/utils.py b/passerelle/apps/maelis/utils.py
index 51ce5ebf..649a924f 100644
--- a/passerelle/apps/maelis/utils.py
+++ b/passerelle/apps/maelis/utils.py
@@ -15,16 +15,17 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 from __future__ import unicode_literals
 
 from copy import copy, deepcopy
 from datetime import datetime
 from dateutil.relativedelta import relativedelta
+import re
 
 from django.utils import timezone
 from django.utils.dateparse import parse_date
 
 from passerelle.utils.jsonresponse import APIError
 
 DATE_FORMAT = '%Y-%m-%d'
 TIME_FORMAT = '%H:%M:%S'
@@ -202,22 +203,27 @@ def decompose_event(event):
         new_event['slot_id'] = "%s%s" % (composition['virtual_unit'], component_id)
         new_event['id'] = '%s-%s-%s' % (
             date_string, event['category_id'], new_event['slot_id'])
         new_event['text'] = component['text']
         yield new_event
 
 
 def flatten_activities(activities, start_date, end_date):
+    regex = re.compile('^([0-9] ){0,1}2[0-9]{3}-2[0-9]{3} ')  # prefix to remove
     data = {}
     for activity in activities:
         if activity.get('openDayList'):
             del activity['openDayList']
         activity_id = activity['activityPortail']['idAct']
-        activity_text = activity['activityPortail']['label']
+        activity_text = activity_text_legacy = activity['activityPortail']['label']
+        match = regex.match(activity_text)
+        if match:
+            activity_text = activity_text[match.end():].strip()
+        activity_text = activity_text.capitalize()
         activity_obj = deepcopy(activity)
         del activity_obj['unitPortailList']
         if not activity_obj['activityPortail']['activityType']:
             activity_obj['activityPortail']['activityType'] = {
                 "code" : "?",
                 "libelle" : "Inconnu",
                 "natureSpec" : {
                     "code" : "?",
@@ -240,17 +246,24 @@ def flatten_activities(activities, start_date, end_date):
                 else:
                     activity_weekly_planning_mask += '0'
         else:
             activity_weekly_planning_mask = "0000000"
 
         units = {}
         for unit in activity['unitPortailList']:
             unit_id = unit['idUnit']
-            unit_text = unit['label']
+            unit_text = unit_text_legacy = unit['label']
+            match = regex.match(unit_text)
+            if match:
+                unit_text = unit_text[match.end():].strip()
+            unit_text = unit_text.capitalize()
+            text_first_part = activity_text
+            if activity_text != unit_text:
+                text_first_part += ' / ' + unit_text
             unit_obj = deepcopy(unit)
             del unit_obj['placeList']
 
             # compute subscribing parameters
             unit_start_date = unit['dateStart'] or start_date
             unit_end_date = unit['dateEnd'] or end_date
             unit_calendar_letter = unit['calendarLetter']
             unit_weekly_planning = ""
@@ -258,21 +271,25 @@ def flatten_activities(activities, start_date, end_date):
                 if letter == '0':
                     unit_weekly_planning += unit_calendar_letter
                 else:
                     unit_weekly_planning += '1'
 
             places = {}
             for place in unit['placeList']:
                 place_id = place['id']
-                place_text = place['lib']
+                place_text_legacy = place['lib']
+                place_text = ' '.join([w.capitalize() for w in place_text_legacy.split(' ')])
 
-                places[place_text] = {
+                places[place_text_legacy] = {
                     'id': '%s-%s-%s' % (activity_id, unit_id, place_id),
-                    'text': '%s / %s / %s' % (activity_text, unit_text, place_text),
+                    'text_legacy': '%s / %s / %s' % (
+                        activity_text_legacy, unit_text_legacy, place_text_legacy),
+                    'text_first_part': text_first_part,
+                    'text': "%s / %s" % (text_first_part, place_text),
                     'activity_id': activity_id,
                     'unit_id': unit_id,
                     'place_id': place_id,
                     'activity_text': activity_text,
                     'unit_text': unit_text,
                     'place_text': place_text,
                     'activity_weekly_planning_mask': activity_weekly_planning_mask,
                     'subscribe_start_date': unit_start_date,
diff --git a/tests/data/maelis/child_activities.json b/tests/data/maelis/child_activities.json
index c103e064..5020baac 100644
--- a/tests/data/maelis/child_activities.json
+++ b/tests/data/maelis/child_activities.json
@@ -33,17 +33,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0010011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "1 2020-2021 GARDERIE MATIN",
+            "activity_text": "Garderie matin",
             "activity_weekly_planning_mask": "0010011",
             "id": "A10003121692-A10003121694-A10000000201",
             "place_id": "A10000000201",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": null,
@@ -55,20 +55,22 @@
                 "lib": "3 JEAN GIONO",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "3 JEAN GIONO",
+            "place_text": "3 Jean Giono",
             "subscribe_end_date": "2021-07-06T00:00:00+02:00",
             "subscribe_start_date": "2020-09-01T00:00:00+02:00",
-            "text": "1 2020-2021 GARDERIE MATIN / 1 2020-2021 GARDERIE MATIN / 3 JEAN GIONO",
+            "text": "Garderie matin / 3 Jean Giono",
+            "text_first_part": "Garderie matin",
+            "text_legacy": "1 2020-2021 GARDERIE MATIN / 1 2020-2021 GARDERIE MATIN / 3 JEAN GIONO",
             "unit_calendar_letter": "X",
             "unit_id": "A10003121694",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "X",
                 "consoTarifList": [
                     {
@@ -93,17 +95,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 1,
                 "subscribePublication": "E",
                 "topCESU": "O",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "1 2020-2021 GARDERIE MATIN",
+            "unit_text": "Garderie matin",
             "unit_weekly_planning": "XX1XX11",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003121692",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -135,17 +137,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0010011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "1 2020-2021 GARDERIE MATIN",
+            "activity_text": "Garderie matin",
             "activity_weekly_planning_mask": "0010011",
             "id": "A10003121692-A10003121694-A10000000211",
             "place_id": "A10000000211",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": null,
@@ -157,20 +159,22 @@
                 "lib": "2 FRANCOIS FABIE",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "2 FRANCOIS FABIE",
+            "place_text": "2 Francois Fabie",
             "subscribe_end_date": "2021-07-06T00:00:00+02:00",
             "subscribe_start_date": "2020-09-01T00:00:00+02:00",
-            "text": "1 2020-2021 GARDERIE MATIN / 1 2020-2021 GARDERIE MATIN / 2 FRANCOIS FABIE",
+            "text": "Garderie matin / 2 Francois Fabie",
+            "text_first_part": "Garderie matin",
+            "text_legacy": "1 2020-2021 GARDERIE MATIN / 1 2020-2021 GARDERIE MATIN / 2 FRANCOIS FABIE",
             "unit_calendar_letter": "X",
             "unit_id": "A10003121694",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "X",
                 "consoTarifList": [
                     {
@@ -195,17 +199,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 1,
                 "subscribePublication": "E",
                 "topCESU": "O",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "1 2020-2021 GARDERIE MATIN",
+            "unit_text": "Garderie matin",
             "unit_weekly_planning": "XX1XX11",
             "unsubscribe_start_date": "2020-09-01T00:00:00+02:00",
             "user_subscribing_status": "subscribed"
         },
         {
             "activity_id": "A10003123490",
             "activity_object": {
                 "activityPortail": {
@@ -238,17 +242,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0010011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2 2020-2021  RESTAURATION SCOLAIRE",
+            "activity_text": "Restauration scolaire",
             "activity_weekly_planning_mask": "0010011",
             "id": "A10003123490-A10003123492-A10000000211",
             "place_id": "A10000000211",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": null,
@@ -275,20 +279,22 @@
                         "headmaster": " ",
                         "idSchool": "A10000003597",
                         "phone": null,
                         "schoolName": "2  FRANCOIS FABIE"
                     }
                 ],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "2 FRANCOIS FABIE",
+            "place_text": "2 Francois Fabie",
             "subscribe_end_date": "2021-07-03T00:00:00+02:00",
             "subscribe_start_date": "2020-09-02T00:00:00+02:00",
-            "text": "2 2020-2021  RESTAURATION SCOLAIRE / 2 2020-2021  RESTAURATION SCOLAIRE / 2 FRANCOIS FABIE",
+            "text": "Restauration scolaire / 2 Francois Fabie",
+            "text_first_part": "Restauration scolaire",
+            "text_legacy": "2 2020-2021  RESTAURATION SCOLAIRE / 2 2020-2021  RESTAURATION SCOLAIRE / 2 FRANCOIS FABIE",
             "unit_calendar_letter": "X",
             "unit_id": "A10003123492",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "X",
                 "consoTarifList": [
                     {
@@ -335,17 +341,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 2,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "2 2020-2021  RESTAURATION SCOLAIRE",
+            "unit_text": "Restauration scolaire",
             "unit_weekly_planning": "XX1XX11",
             "unsubscribe_start_date": "2020-09-02T00:00:00+02:00",
             "user_subscribing_status": "subscribed"
         },
         {
             "activity_id": "A10003123507",
             "activity_object": {
                 "activityPortail": {
@@ -374,17 +380,17 @@
                     "schoolControl": null,
                     "schoolNature": null,
                     "schoolYear": 2020,
                     "waitIfComplete": "N",
                     "weeklyCalendarActivityList": []
                 },
                 "openDayList": []
             },
-            "activity_text": "3 2020-2021 GARDERIE SOIR",
+            "activity_text": "Garderie soir",
             "activity_weekly_planning_mask": "0000000",
             "id": "A10003123507-A10003123509-A10000000201",
             "place_id": "A10000000201",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": null,
@@ -396,20 +402,22 @@
                 "lib": "3 JEAN GIONO",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "3 JEAN GIONO",
+            "place_text": "3 Jean Giono",
             "subscribe_end_date": "2021-07-03T00:00:00+02:00",
             "subscribe_start_date": "2020-09-02T00:00:00+02:00",
-            "text": "3 2020-2021 GARDERIE SOIR / 3 2020-2021 GARDERIE SOIR / 3 JEAN GIONO",
+            "text": "Garderie soir / 3 Jean Giono",
+            "text_first_part": "Garderie soir",
+            "text_legacy": "3 2020-2021 GARDERIE SOIR / 3 2020-2021 GARDERIE SOIR / 3 JEAN GIONO",
             "unit_calendar_letter": "X",
             "unit_id": "A10003123509",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "X",
                 "consoTarifList": [
                     {
@@ -434,17 +442,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 3,
                 "subscribePublication": "E",
                 "topCESU": "O",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "3 2020-2021 GARDERIE SOIR",
+            "unit_text": "Garderie soir",
             "unit_weekly_planning": "XXXXXXX",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003123507",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -472,17 +480,17 @@
                     "schoolControl": null,
                     "schoolNature": null,
                     "schoolYear": 2020,
                     "waitIfComplete": "N",
                     "weeklyCalendarActivityList": []
                 },
                 "openDayList": []
             },
-            "activity_text": "3 2020-2021 GARDERIE SOIR",
+            "activity_text": "Garderie soir",
             "activity_weekly_planning_mask": "0000000",
             "id": "A10003123507-A10003123509-A10000000211",
             "place_id": "A10000000211",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": null,
@@ -494,20 +502,22 @@
                 "lib": "2 FRANCOIS FABIE",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "2 FRANCOIS FABIE",
+            "place_text": "2 Francois Fabie",
             "subscribe_end_date": "2021-07-03T00:00:00+02:00",
             "subscribe_start_date": "2020-09-02T00:00:00+02:00",
-            "text": "3 2020-2021 GARDERIE SOIR / 3 2020-2021 GARDERIE SOIR / 2 FRANCOIS FABIE",
+            "text": "Garderie soir / 2 Francois Fabie",
+            "text_first_part": "Garderie soir",
+            "text_legacy": "3 2020-2021 GARDERIE SOIR / 3 2020-2021 GARDERIE SOIR / 2 FRANCOIS FABIE",
             "unit_calendar_letter": "X",
             "unit_id": "A10003123509",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "X",
                 "consoTarifList": [
                     {
@@ -532,17 +542,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 3,
                 "subscribePublication": "E",
                 "topCESU": "O",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "3 2020-2021 GARDERIE SOIR",
+            "unit_text": "Garderie soir",
             "unit_weekly_planning": "XXXXXXX",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003131850",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -574,17 +584,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0000011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 ALSH VACANCES PAGNOL (CAPA)",
+            "activity_text": "Alsh vacances pagnol (capa)",
             "activity_weekly_planning_mask": "0000011",
             "id": "A10003131850-A10003131861-A10000000212",
             "place_id": "A10000000212",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": "PLACE MARCEL PAGNOL",
@@ -596,20 +606,22 @@
                 "lib": "ALSH PAGNOL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH PAGNOL",
+            "place_text": "Alsh Pagnol",
             "subscribe_end_date": "2021-03-05T00:00:00+02:00",
             "subscribe_start_date": "2021-02-28T00:00:00+02:00",
-            "text": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / HIVER 2EME SEMAINE / ALSH PAGNOL",
+            "text": "Alsh vacances pagnol (capa) / Hiver 2eme semaine / Alsh Pagnol",
+            "text_first_part": "Alsh vacances pagnol (capa) / Hiver 2eme semaine",
+            "text_legacy": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / HIVER 2EME SEMAINE / ALSH PAGNOL",
             "unit_calendar_letter": "c",
             "unit_id": "A10003131861",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "c",
                 "consoTarifList": [
                     {
@@ -645,17 +657,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 3,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "HIVER 2EME SEMAINE",
+            "unit_text": "Hiver 2eme semaine",
             "unit_weekly_planning": "ccccc11",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003131850",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -687,17 +699,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0000011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 ALSH VACANCES PAGNOL (CAPA)",
+            "activity_text": "Alsh vacances pagnol (capa)",
             "activity_weekly_planning_mask": "0000011",
             "id": "A10003131850-A10003131861-A10002132200",
             "place_id": "A10002132200",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": null,
@@ -709,20 +721,22 @@
                 "lib": "ALSH MISTRAL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH MISTRAL",
+            "place_text": "Alsh Mistral",
             "subscribe_end_date": "2021-03-05T00:00:00+02:00",
             "subscribe_start_date": "2021-02-28T00:00:00+02:00",
-            "text": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / HIVER 2EME SEMAINE / ALSH MISTRAL",
+            "text": "Alsh vacances pagnol (capa) / Hiver 2eme semaine / Alsh Mistral",
+            "text_first_part": "Alsh vacances pagnol (capa) / Hiver 2eme semaine",
+            "text_legacy": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / HIVER 2EME SEMAINE / ALSH MISTRAL",
             "unit_calendar_letter": "c",
             "unit_id": "A10003131861",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "c",
                 "consoTarifList": [
                     {
@@ -758,17 +772,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 3,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "HIVER 2EME SEMAINE",
+            "unit_text": "Hiver 2eme semaine",
             "unit_weekly_planning": "ccccc11",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003131850",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -800,17 +814,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0000011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 ALSH VACANCES PAGNOL (CAPA)",
+            "activity_text": "Alsh vacances pagnol (capa)",
             "activity_weekly_planning_mask": "0000011",
             "id": "A10003131850-A10003131879-A10000000212",
             "place_id": "A10000000212",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": "PLACE MARCEL PAGNOL",
@@ -822,20 +836,22 @@
                 "lib": "ALSH PAGNOL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH PAGNOL",
+            "place_text": "Alsh Pagnol",
             "subscribe_end_date": "2020-10-30T00:00:00+02:00",
             "subscribe_start_date": "2020-10-26T00:00:00+02:00",
-            "text": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / TOUSSAINT 2EME SEMAINE / ALSH PAGNOL",
+            "text": "Alsh vacances pagnol (capa) / Toussaint 2eme semaine / Alsh Pagnol",
+            "text_first_part": "Alsh vacances pagnol (capa) / Toussaint 2eme semaine",
+            "text_legacy": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / TOUSSAINT 2EME SEMAINE / ALSH PAGNOL",
             "unit_calendar_letter": "D",
             "unit_id": "A10003131879",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "D",
                 "consoTarifList": [
                     {
@@ -871,17 +887,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 2,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "TOUSSAINT 2EME SEMAINE",
+            "unit_text": "Toussaint 2eme semaine",
             "unit_weekly_planning": "DDDDD11",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003131850",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -913,17 +929,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0000011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 ALSH VACANCES PAGNOL (CAPA)",
+            "activity_text": "Alsh vacances pagnol (capa)",
             "activity_weekly_planning_mask": "0000011",
             "id": "A10003131850-A10003131879-A10002132200",
             "place_id": "A10002132200",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": null,
@@ -935,20 +951,22 @@
                 "lib": "ALSH MISTRAL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH MISTRAL",
+            "place_text": "Alsh Mistral",
             "subscribe_end_date": "2020-10-30T00:00:00+02:00",
             "subscribe_start_date": "2020-10-26T00:00:00+02:00",
-            "text": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / TOUSSAINT 2EME SEMAINE / ALSH MISTRAL",
+            "text": "Alsh vacances pagnol (capa) / Toussaint 2eme semaine / Alsh Mistral",
+            "text_first_part": "Alsh vacances pagnol (capa) / Toussaint 2eme semaine",
+            "text_legacy": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / TOUSSAINT 2EME SEMAINE / ALSH MISTRAL",
             "unit_calendar_letter": "D",
             "unit_id": "A10003131879",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "D",
                 "consoTarifList": [
                     {
@@ -984,17 +1002,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 2,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "TOUSSAINT 2EME SEMAINE",
+            "unit_text": "Toussaint 2eme semaine",
             "unit_weekly_planning": "DDDDD11",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003131850",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -1026,17 +1044,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0000011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 ALSH VACANCES PAGNOL (CAPA)",
+            "activity_text": "Alsh vacances pagnol (capa)",
             "activity_weekly_planning_mask": "0000011",
             "id": "A10003131850-A10003131882-A10000000212",
             "place_id": "A10000000212",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": "PLACE MARCEL PAGNOL",
@@ -1048,20 +1066,22 @@
                 "lib": "ALSH PAGNOL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH PAGNOL",
+            "place_text": "Alsh Pagnol",
             "subscribe_end_date": "2020-10-23T00:00:00+02:00",
             "subscribe_start_date": "2020-10-19T00:00:00+02:00",
-            "text": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / TOUSSAINT 1 ERE SEMAINE / ALSH PAGNOL",
+            "text": "Alsh vacances pagnol (capa) / Toussaint 1 ere semaine / Alsh Pagnol",
+            "text_first_part": "Alsh vacances pagnol (capa) / Toussaint 1 ere semaine",
+            "text_legacy": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / TOUSSAINT 1 ERE SEMAINE / ALSH PAGNOL",
             "unit_calendar_letter": "C",
             "unit_id": "A10003131882",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "C",
                 "consoTarifList": [
                     {
@@ -1097,17 +1117,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 1,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "TOUSSAINT 1 ERE SEMAINE",
+            "unit_text": "Toussaint 1 ere semaine",
             "unit_weekly_planning": "CCCCC11",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003131850",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -1139,17 +1159,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0000011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 ALSH VACANCES PAGNOL (CAPA)",
+            "activity_text": "Alsh vacances pagnol (capa)",
             "activity_weekly_planning_mask": "0000011",
             "id": "A10003131850-A10003131882-A10002132200",
             "place_id": "A10002132200",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": null,
@@ -1161,20 +1181,22 @@
                 "lib": "ALSH MISTRAL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH MISTRAL",
+            "place_text": "Alsh Mistral",
             "subscribe_end_date": "2020-10-23T00:00:00+02:00",
             "subscribe_start_date": "2020-10-19T00:00:00+02:00",
-            "text": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / TOUSSAINT 1 ERE SEMAINE / ALSH MISTRAL",
+            "text": "Alsh vacances pagnol (capa) / Toussaint 1 ere semaine / Alsh Mistral",
+            "text_first_part": "Alsh vacances pagnol (capa) / Toussaint 1 ere semaine",
+            "text_legacy": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / TOUSSAINT 1 ERE SEMAINE / ALSH MISTRAL",
             "unit_calendar_letter": "C",
             "unit_id": "A10003131882",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "C",
                 "consoTarifList": [
                     {
@@ -1210,17 +1232,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 1,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "TOUSSAINT 1 ERE SEMAINE",
+            "unit_text": "Toussaint 1 ere semaine",
             "unit_weekly_planning": "CCCCC11",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003131850",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -1252,17 +1274,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0000011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 ALSH VACANCES PAGNOL (CAPA)",
+            "activity_text": "Alsh vacances pagnol (capa)",
             "activity_weekly_planning_mask": "0000011",
             "id": "A10003131850-A10003131903-A10000000212",
             "place_id": "A10000000212",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": "PLACE MARCEL PAGNOL",
@@ -1274,20 +1296,22 @@
                 "lib": "ALSH PAGNOL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH PAGNOL",
+            "place_text": "Alsh Pagnol",
             "subscribe_end_date": "2020-12-31T00:00:00+02:00",
             "subscribe_start_date": "2020-12-28T00:00:00+02:00",
-            "text": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / NOEL 2EME SEMAINE / ALSH PAGNOL",
+            "text": "Alsh vacances pagnol (capa) / Noel 2eme semaine / Alsh Pagnol",
+            "text_first_part": "Alsh vacances pagnol (capa) / Noel 2eme semaine",
+            "text_legacy": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / NOEL 2EME SEMAINE / ALSH PAGNOL",
             "unit_calendar_letter": "B",
             "unit_id": "A10003131903",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "B",
                 "consoTarifList": [
                     {
@@ -1323,17 +1347,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 4,
                 "subscribePublication": "E",
                 "topCESU": "O",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "NOEL 2EME SEMAINE",
+            "unit_text": "Noel 2eme semaine",
             "unit_weekly_planning": "BBBBB11",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003131850",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -1365,17 +1389,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0000011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 ALSH VACANCES PAGNOL (CAPA)",
+            "activity_text": "Alsh vacances pagnol (capa)",
             "activity_weekly_planning_mask": "0000011",
             "id": "A10003131850-A10003131903-A10002132200",
             "place_id": "A10002132200",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": null,
@@ -1387,20 +1411,22 @@
                 "lib": "ALSH MISTRAL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH MISTRAL",
+            "place_text": "Alsh Mistral",
             "subscribe_end_date": "2020-12-31T00:00:00+02:00",
             "subscribe_start_date": "2020-12-28T00:00:00+02:00",
-            "text": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / NOEL 2EME SEMAINE / ALSH MISTRAL",
+            "text": "Alsh vacances pagnol (capa) / Noel 2eme semaine / Alsh Mistral",
+            "text_first_part": "Alsh vacances pagnol (capa) / Noel 2eme semaine",
+            "text_legacy": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / NOEL 2EME SEMAINE / ALSH MISTRAL",
             "unit_calendar_letter": "B",
             "unit_id": "A10003131903",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "B",
                 "consoTarifList": [
                     {
@@ -1436,17 +1462,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 4,
                 "subscribePublication": "E",
                 "topCESU": "O",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "NOEL 2EME SEMAINE",
+            "unit_text": "Noel 2eme semaine",
             "unit_weekly_planning": "BBBBB11",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003131850",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -1478,17 +1504,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0000011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 ALSH VACANCES PAGNOL (CAPA)",
+            "activity_text": "Alsh vacances pagnol (capa)",
             "activity_weekly_planning_mask": "0000011",
             "id": "A10003131850-A10003131909-A10000000212",
             "place_id": "A10000000212",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": "PLACE MARCEL PAGNOL",
@@ -1500,20 +1526,22 @@
                 "lib": "ALSH PAGNOL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH PAGNOL",
+            "place_text": "Alsh Pagnol",
             "subscribe_end_date": "2020-12-24T00:00:00+02:00",
             "subscribe_start_date": "2020-12-21T00:00:00+02:00",
-            "text": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / NOEL 1ERE SEMAINE / ALSH PAGNOL",
+            "text": "Alsh vacances pagnol (capa) / Noel 1ere semaine / Alsh Pagnol",
+            "text_first_part": "Alsh vacances pagnol (capa) / Noel 1ere semaine",
+            "text_legacy": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / NOEL 1ERE SEMAINE / ALSH PAGNOL",
             "unit_calendar_letter": "J",
             "unit_id": "A10003131909",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "J",
                 "consoTarifList": [
                     {
@@ -1549,17 +1577,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 3,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "NOEL 1ERE SEMAINE",
+            "unit_text": "Noel 1ere semaine",
             "unit_weekly_planning": "JJJJJ11",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003131850",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -1591,17 +1619,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0000011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 ALSH VACANCES PAGNOL (CAPA)",
+            "activity_text": "Alsh vacances pagnol (capa)",
             "activity_weekly_planning_mask": "0000011",
             "id": "A10003131850-A10003131909-A10002132200",
             "place_id": "A10002132200",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": null,
@@ -1613,20 +1641,22 @@
                 "lib": "ALSH MISTRAL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH MISTRAL",
+            "place_text": "Alsh Mistral",
             "subscribe_end_date": "2020-12-24T00:00:00+02:00",
             "subscribe_start_date": "2020-12-21T00:00:00+02:00",
-            "text": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / NOEL 1ERE SEMAINE / ALSH MISTRAL",
+            "text": "Alsh vacances pagnol (capa) / Noel 1ere semaine / Alsh Mistral",
+            "text_first_part": "Alsh vacances pagnol (capa) / Noel 1ere semaine",
+            "text_legacy": "2020-2021 ALSH VACANCES PAGNOL (CAPA) / NOEL 1ERE SEMAINE / ALSH MISTRAL",
             "unit_calendar_letter": "J",
             "unit_id": "A10003131909",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "J",
                 "consoTarifList": [
                     {
@@ -1662,17 +1692,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 3,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "NOEL 1ERE SEMAINE",
+            "unit_text": "Noel 1ere semaine",
             "unit_weekly_planning": "JJJJJ11",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003132030",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -1704,17 +1734,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "1101111",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 CENTRE DE LOISIRS MERCREDI",
+            "activity_text": "Centre de loisirs mercredi",
             "activity_weekly_planning_mask": "1101111",
             "id": "A10003132030-A10003132034-A10000000212",
             "place_id": "A10000000212",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": "PLACE MARCEL PAGNOL",
@@ -1726,20 +1756,22 @@
                 "lib": "ALSH PAGNOL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH PAGNOL",
+            "place_text": "Alsh Pagnol",
             "subscribe_end_date": "2021-07-03T00:00:00+02:00",
             "subscribe_start_date": "2020-09-02T00:00:00+02:00",
-            "text": "2020-2021 CENTRE DE LOISIRS MERCREDI / JOURNEE / ALSH PAGNOL",
+            "text": "Centre de loisirs mercredi / Journee / Alsh Pagnol",
+            "text_first_part": "Centre de loisirs mercredi / Journee",
+            "text_legacy": "2020-2021 CENTRE DE LOISIRS MERCREDI / JOURNEE / ALSH PAGNOL",
             "unit_calendar_letter": "A",
             "unit_id": "A10003132034",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "A",
                 "consoTarifList": [
                     {
@@ -1764,17 +1796,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 4,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "JOURNEE",
+            "unit_text": "Journee",
             "unit_weekly_planning": "11A1111",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003132030",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -1806,17 +1838,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "1101111",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 CENTRE DE LOISIRS MERCREDI",
+            "activity_text": "Centre de loisirs mercredi",
             "activity_weekly_planning_mask": "1101111",
             "id": "A10003132030-A10003132036-A10000000212",
             "place_id": "A10000000212",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": "PLACE MARCEL PAGNOL",
@@ -1828,20 +1860,22 @@
                 "lib": "ALSH PAGNOL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH PAGNOL",
+            "place_text": "Alsh Pagnol",
             "subscribe_end_date": "2021-07-03T00:00:00+02:00",
             "subscribe_start_date": "2020-09-02T00:00:00+02:00",
-            "text": "2020-2021 CENTRE DE LOISIRS MERCREDI / MATIN / ALSH PAGNOL",
+            "text": "Centre de loisirs mercredi / Matin / Alsh Pagnol",
+            "text_first_part": "Centre de loisirs mercredi / Matin",
+            "text_legacy": "2020-2021 CENTRE DE LOISIRS MERCREDI / MATIN / ALSH PAGNOL",
             "unit_calendar_letter": "B",
             "unit_id": "A10003132036",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "B",
                 "consoTarifList": [
                     {
@@ -1866,17 +1900,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 1,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "MATIN",
+            "unit_text": "Matin",
             "unit_weekly_planning": "11B1111",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003132030",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -1908,17 +1942,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "1101111",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 CENTRE DE LOISIRS MERCREDI",
+            "activity_text": "Centre de loisirs mercredi",
             "activity_weekly_planning_mask": "1101111",
             "id": "A10003132030-A10003132038-A10000000212",
             "place_id": "A10000000212",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": "PLACE MARCEL PAGNOL",
@@ -1930,20 +1964,22 @@
                 "lib": "ALSH PAGNOL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH PAGNOL",
+            "place_text": "Alsh Pagnol",
             "subscribe_end_date": "2021-07-03T00:00:00+02:00",
             "subscribe_start_date": "2020-09-02T00:00:00+02:00",
-            "text": "2020-2021 CENTRE DE LOISIRS MERCREDI / MATIN ET REPAS / ALSH PAGNOL",
+            "text": "Centre de loisirs mercredi / Matin et repas / Alsh Pagnol",
+            "text_first_part": "Centre de loisirs mercredi / Matin et repas",
+            "text_legacy": "2020-2021 CENTRE DE LOISIRS MERCREDI / MATIN ET REPAS / ALSH PAGNOL",
             "unit_calendar_letter": "C",
             "unit_id": "A10003132038",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "C",
                 "consoTarifList": [
                     {
@@ -1968,17 +2004,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 2,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "MATIN ET REPAS",
+            "unit_text": "Matin et repas",
             "unit_weekly_planning": "11C1111",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003132030",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -2010,17 +2046,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "1101111",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "2020-2021 CENTRE DE LOISIRS MERCREDI",
+            "activity_text": "Centre de loisirs mercredi",
             "activity_weekly_planning_mask": "1101111",
             "id": "A10003132030-A10003132040-A10000000212",
             "place_id": "A10000000212",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": "PLACE MARCEL PAGNOL",
@@ -2032,20 +2068,22 @@
                 "lib": "ALSH PAGNOL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH PAGNOL",
+            "place_text": "Alsh Pagnol",
             "subscribe_end_date": "2021-07-03T00:00:00+02:00",
             "subscribe_start_date": "2020-09-02T00:00:00+02:00",
-            "text": "2020-2021 CENTRE DE LOISIRS MERCREDI / APRES MIDI / ALSH PAGNOL",
+            "text": "Centre de loisirs mercredi / Apres midi / Alsh Pagnol",
+            "text_first_part": "Centre de loisirs mercredi / Apres midi",
+            "text_legacy": "2020-2021 CENTRE DE LOISIRS MERCREDI / APRES MIDI / ALSH PAGNOL",
             "unit_calendar_letter": "D",
             "unit_id": "A10003132040",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "D",
                 "consoTarifList": [
                     {
@@ -2070,17 +2108,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 3,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "APRES MIDI",
+            "unit_text": "Apres midi",
             "unit_weekly_planning": "11D1111",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003132090",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -2112,17 +2150,17 @@
                     "weeklyCalendarActivityList": [
                         {
                             "weeklyCalendarStr": "0000011",
                             "yearCalendar": 2020
                         }
                     ]
                 }
             },
-            "activity_text": "COURS DE DANSE",
+            "activity_text": "Cours de danse",
             "activity_weekly_planning_mask": "0000011",
             "id": "A10003132090-A10003132091-A10000000212",
             "place_id": "A10000000212",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": "PLACE MARCEL PAGNOL",
@@ -2134,20 +2172,22 @@
                 "lib": "ALSH PAGNOL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH PAGNOL",
+            "place_text": "Alsh Pagnol",
             "subscribe_end_date": "2021-07-31",
             "subscribe_start_date": "2020-01-01T00:00:00+02:00",
-            "text": "COURS DE DANSE / COURS DE DANSE / ALSH PAGNOL",
+            "text": "Cours de danse / Alsh Pagnol",
+            "text_first_part": "Cours de danse",
+            "text_legacy": "COURS DE DANSE / COURS DE DANSE / ALSH PAGNOL",
             "unit_calendar_letter": "X",
             "unit_id": "A10003132091",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "X",
                 "consoTarifList": [],
                 "dateEnd": null,
@@ -2160,17 +2200,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 0,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "COURS DE DANSE",
+            "unit_text": "Cours de danse",
             "unit_weekly_planning": "XXXXX11",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003132150",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -2198,17 +2238,17 @@
                     "schoolControl": null,
                     "schoolNature": null,
                     "schoolYear": 2020,
                     "waitIfComplete": "N",
                     "weeklyCalendarActivityList": []
                 },
                 "openDayList": []
             },
-            "activity_text": "LASERQUEST",
+            "activity_text": "Laserquest",
             "activity_weekly_planning_mask": "0000000",
             "id": "A10003132150-A10003132152-A10000000212",
             "place_id": "A10000000212",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": "PLACE MARCEL PAGNOL",
@@ -2220,20 +2260,22 @@
                 "lib": "ALSH PAGNOL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH PAGNOL",
+            "place_text": "Alsh Pagnol",
             "subscribe_end_date": "2021-07-31",
             "subscribe_start_date": "2020-01-01T00:00:00+02:00",
-            "text": "LASERQUEST / LASERQUEST / ALSH PAGNOL",
+            "text": "Laserquest / Alsh Pagnol",
+            "text_first_part": "Laserquest",
+            "text_legacy": "LASERQUEST / LASERQUEST / ALSH PAGNOL",
             "unit_calendar_letter": "X",
             "unit_id": "A10003132152",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "X",
                 "consoTarifList": [],
                 "dateEnd": null,
@@ -2246,17 +2288,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 1,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "LASERQUEST",
+            "unit_text": "Laserquest",
             "unit_weekly_planning": "XXXXXXX",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003132271",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -2284,17 +2326,17 @@
                     "schoolControl": null,
                     "schoolNature": null,
                     "schoolYear": 2020,
                     "waitIfComplete": "N",
                     "weeklyCalendarActivityList": []
                 },
                 "openDayList": []
             },
-            "activity_text": "EQUITATION",
+            "activity_text": "Equitation",
             "activity_weekly_planning_mask": "0000000",
             "id": "A10003132271-A10003132273-A10000000212",
             "place_id": "A10000000212",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": "PLACE MARCEL PAGNOL",
@@ -2306,20 +2348,22 @@
                 "lib": "ALSH PAGNOL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH PAGNOL",
+            "place_text": "Alsh Pagnol",
             "subscribe_end_date": "2021-07-31",
             "subscribe_start_date": "2020-09-02T00:00:00+02:00",
-            "text": "EQUITATION / EQUITATION / ALSH PAGNOL",
+            "text": "Equitation / Alsh Pagnol",
+            "text_first_part": "Equitation",
+            "text_legacy": "EQUITATION / EQUITATION / ALSH PAGNOL",
             "unit_calendar_letter": "X",
             "unit_id": "A10003132273",
             "unit_object": {
                 "birthDateEnd": "2014-12-31T00:00:00+02:00",
                 "birthDateStart": "1970-01-01T00:00:00+02:00",
                 "calendarLetter": "X",
                 "consoTarifList": [],
                 "dateEnd": null,
@@ -2332,17 +2376,17 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 0,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "EQUITATION",
+            "unit_text": "Equitation",
             "unit_weekly_planning": "XXXXXXX",
             "user_subscribing_status": "not-subscribed"
         },
         {
             "activity_id": "A10003132293",
             "activity_object": {
                 "activityPortail": {
                     "activityType": {
@@ -2370,17 +2414,17 @@
                     "schoolControl": null,
                     "schoolNature": null,
                     "schoolYear": 2020,
                     "waitIfComplete": "N",
                     "weeklyCalendarActivityList": []
                 },
                 "openDayList": []
             },
-            "activity_text": "SORTIE MUSEE",
+            "activity_text": "Sortie musee",
             "activity_weekly_planning_mask": "0000000",
             "id": "A10003132293-A10003132295-A10000000212",
             "place_id": "A10000000212",
             "place_object": {
                 "adresse": {
                     "idStreet": null,
                     "num": 0,
                     "street1": "PLACE MARCEL PAGNOL",
@@ -2392,20 +2436,22 @@
                 "lib": "ALSH PAGNOL",
                 "lib2": null,
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "schoolInfoList": [],
                 "typeCtrlPlace": "N"
             },
-            "place_text": "ALSH PAGNOL",
+            "place_text": "Alsh Pagnol",
             "subscribe_end_date": "2021-07-31",
             "subscribe_start_date": "2020-01-01T00:00:00+02:00",
-            "text": "SORTIE MUSEE / SORTIE MUSEE / ALSH PAGNOL",
+            "text": "Sortie musee / Alsh Pagnol",
+            "text_first_part": "Sortie musee",
+            "text_legacy": "SORTIE MUSEE / SORTIE MUSEE / ALSH PAGNOL",
             "unit_calendar_letter": "X",
             "unit_id": "A10003132295",
             "unit_object": {
                 "birthDateEnd": null,
                 "birthDateStart": null,
                 "calendarLetter": "X",
                 "consoTarifList": [],
                 "dateEnd": null,
@@ -2418,15 +2464,15 @@
                 "nbPlace": 0,
                 "nbPlaceBoy": 0,
                 "nbPlaceGirl": 0,
                 "numOrder": 0,
                 "subscribePublication": "E",
                 "topCESU": "N",
                 "typeCtrlPlace": "N"
             },
-            "unit_text": "SORTIE MUSEE",
+            "unit_text": "Sortie musee",
             "unit_weekly_planning": "XXXXXXX",
             "user_subscribing_status": "not-subscribed"
         }
     ],
     "err": 0
 }
\ No newline at end of file
-- 
2.29.2

