aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas "Cakeisalie5" Touhey <thomas@touhey.fr>2018-10-29 13:02:08 +0100
committerThomas "Cakeisalie5" Touhey <thomas@touhey.fr>2018-10-29 13:02:08 +0100
commit33fa1bacec308d9eb65a645fcbd92c95dfc7c86a (patch)
tree6d7073414df29e54e9ad5ae7dba620a782238c18
parentbefc89cc89aaff08bb26ee79d175525c4bd0432e (diff)
Normalized the OperationType with data and leads.
-rwxr-xr-xsgdfi/_dbs/_ops.py238
1 files changed, 128 insertions, 110 deletions
diff --git a/sgdfi/_dbs/_ops.py b/sgdfi/_dbs/_ops.py
index 4fe82d5..fcd6bf7 100755
--- a/sgdfi/_dbs/_ops.py
+++ b/sgdfi/_dbs/_ops.py
@@ -163,110 +163,113 @@ class OperationType(_Enum):
# TODO: other types (next index: 51).
-_OperationTypeIds = {
- "Animation / Création d'une date": \
- OperationType.ANIM_DATE_NEW,
- "Animation / Modification d'une date": \
- OperationType.ANIM_DATE_EDIT,
- "Animation / Suppression d'une date": \
- OperationType.ANIM_DATE_DEL,
- "Animation / Création d'un message": \
- OperationType.ANIM_MSG_NEW,
- "Animation / Création d'une tâche": \
- OperationType.ANIM_TASK_NEW,
- "Bulletin d'adhésion / Impression locale d'un bulletin d'adhésion": \
- OperationType.BUL_PRINT,
- "Camp / Ajout d'un animateur à un camp": \
- OperationType.CAMP_ANIM_ADD,
- "Camp / Ajout d'un directeur à un camp": \
- OperationType.CAMP_DIR_ADD,
- "Camp / Ajout d'une étape d'itinéraire à un camp": \
- OperationType.CAMP_ITIN_ADD,
- "Camp / Commentaire pour le responsable d'accueil": \
- OperationType.CAMP_COMMENT,
- "Camp / Création d'un camp": \
- OperationType.CAMP_NEW,
- "Camp / Sauvegarde de fichier": \
- OperationType.CAMP_FILE_SAVE,
- "Camp / Suivi Jeunesse et Sports": \
- OperationType.CAMP_JS,
- "Camp / Suppression d'une étape d'itinéraire d'un camp": \
- OperationType.CAMP_ITIN_DEL,
- "Camp / Modification d'un animateur d'un camp": \
- OperationType.CAMP_ANIM_EDIT,
- "Camp / Modification d'un camp": \
- OperationType.CAMP_EDIT,
- "Camp / Modification d'une étape d'itinéraire d'un camp": \
- OperationType.CAMP_ITIN_EDIT,
- "Camp / Validation d'une étape d'un camp": \
- OperationType.CAMP_STEP_VAL,
- "Déclaration J&S / Affectation TAM d'un intervenant": \
- OperationType.JS_TAM_ASSIGN,
- "Déclaration J&S / Déclaration TAM d'un intervenant": \
- OperationType.JS_TAM_DECL,
- "Formation / Création d'une action de formation": \
- OperationType.TRAIN_NEW,
- "Formation / Envoi de notification": \
- OperationType.TRAIN_NOTIFY,
- "Formation / Modification d'une action de formation": \
- OperationType.TRAIN_EDIT,
- "Individu / Abonnement": \
- OperationType.IN_SUB,
- "Individu / Adhésion": \
- OperationType.IN_MEMBERSHIP,
- "Individu / Création": \
- OperationType.IN_NEW,
- "Individu / Demande de nomination": \
- OperationType.IN_NOMIN_REQUEST,
- "Individu / Edition de la carte d'adhérent": \
- OperationType.IN_CARD_EDIT,
- "Individu / Edition d'un reçu fiscal": \
- OperationType.IN_RECEIPT_EDIT,
- "Individu / Inscription": \
- OperationType.IN_REG,
- "Individu / Règlement de famille": \
- OperationType.IN_PAYMENT,
- "Individu / Validation demande de nomination": \
- OperationType.IN_NOMIN_REQUEST_VAL,
- "Individu / Validation nomination": \
- OperationType.IN_NOMIN_VAL,
- "Inscription / Annulation d'une demande d'inscription": \
- OperationType.REG_REQUEST_CAN,
- "Inscription / Création d'une demande d'inscription": \
- OperationType.REG_REQUEST_NEW,
- "Inscription / Validation d'une demande d'inscription": \
- OperationType.REG_REQUEST_VAL,
- "Inscription rassemblement / Création Demande": \
- OperationType.RALREG_REQUEST_NEW,
- "Inscription rassemblement / Validation Intermédiaire Demande": \
- OperationType.RALREG_REQUEST_MID_VAL,
- "Lieu d'activité / Création d'un lieu d'activité": \
- OperationType.PL_NEW,
- "Lieu d'activité / Modification d'un lieu d'activité": \
- OperationType.PL_EDIT,
- "Patrimoine / Assurance": \
- OperationType.PAT_INSURE,
- "Patrimoine / Demande d'assurance": \
- OperationType.PAT_INSURE_REQUEST,
- "Patrimoine / Modification": \
- OperationType.PAT_EDIT,
- "Projet pédagogique / Import d'un fichier matrice": \
- OperationType.PEDA_XLS_IMPORT,
- "Projet pédagogique / Suppression d'un fichier matrice": \
- OperationType.PEDA_XLS_DEL,
- "Structure / Création": \
- OperationType.ST_NEW,
- "Structure / Définition date début d'activité": \
- OperationType.ST_START,
- "Structure / Modification spécialités": \
- OperationType.ST_SPEC,
- "Structure / Recopie nouvelle saison": \
- OperationType.ST_COPY,
+# Operation type data.
+# - name.
+
+_OperationTypeData = {
+ OperationType.ANIM_DATE_NEW: \
+ ("Animation / Création d'une date",),
+ OperationType.ANIM_DATE_EDIT: \
+ ("Animation / Modification d'une date",),
+ OperationType.ANIM_DATE_DEL: \
+ ("Animation / Suppression d'une date",),
+ OperationType.ANIM_MSG_NEW: \
+ ("Animation / Création d'un message",),
+ OperationType.ANIM_TASK_NEW: \
+ ("Animation / Création d'une tâche",),
+ OperationType.BUL_PRINT: \
+ ("Bulletin d'adhésion / Impression locale d'un bulletin d'adhésion",),
+ OperationType.CAMP_ANIM_ADD: \
+ ("Camp / Ajout d'un animateur à un camp",),
+ OperationType.CAMP_DIR_ADD: \
+ ("Camp / Ajout d'un directeur à un camp",),
+ OperationType.CAMP_ITIN_ADD: \
+ ("Camp / Ajout d'une étape d'itinéraire à un camp",),
+ OperationType.CAMP_COMMENT: \
+ ("Camp / Commentaire pour le responsable d'accueil",),
+ OperationType.CAMP_NEW: \
+ ("Camp / Création d'un camp",),
+ OperationType.CAMP_FILE_SAVE: \
+ ("Camp / Sauvegarde de fichier",),
+ OperationType.CAMP_JS: \
+ ("Camp / Suivi Jeunesse et Sports",),
+ OperationType.CAMP_ITIN_DEL: \
+ ("Camp / Suppression d'une étape d'itinéraire d'un camp",),
+ OperationType.CAMP_ANIM_EDIT: \
+ ("Camp / Modification d'un animateur d'un camp",),
+ OperationType.CAMP_EDIT: \
+ ("Camp / Modification d'un camp",),
+ OperationType.CAMP_ITIN_EDIT: \
+ ("Camp / Modification d'une étape d'itinéraire d'un camp",),
+ OperationType.CAMP_STEP_VAL: \
+ ("Camp / Validation d'une étape d'un camp",),
+ OperationType.JS_TAM_ASSIGN: \
+ ("Déclaration J&S / Affectation TAM d'un intervenant",),
+ OperationType.JS_TAM_DECL: \
+ ("Déclaration J&S / Déclaration TAM d'un intervenant",),
+ OperationType.TRAIN_NEW: \
+ ("Formation / Création d'une action de formation",),
+ OperationType.TRAIN_NOTIFY: \
+ ("Formation / Envoi de notification",),
+ OperationType.TRAIN_EDIT: \
+ ("Formation / Modification d'une action de formation",),
+ OperationType.IN_SUB: \
+ ("Individu / Abonnement",),
+ OperationType.IN_MEMBERSHIP: \
+ ("Individu / Adhésion",),
+ OperationType.IN_NEW: \
+ ("Individu / Création",),
+ OperationType.IN_NOMIN_REQUEST: \
+ ("Individu / Demande de nomination",),
+ OperationType.IN_CARD_EDIT: \
+ ("Individu / Edition de la carte d'adhérent",),
+ OperationType.IN_RECEIPT_EDIT: \
+ ("Individu / Edition d'un reçu fiscal",),
+ OperationType.IN_REG: \
+ ("Individu / Inscription",),
+ OperationType.IN_PAYMENT: \
+ ("Individu / Règlement de famille",),
+ OperationType.IN_NOMIN_REQUEST_VAL: \
+ ("Individu / Validation demande de nomination",),
+ OperationType.IN_NOMIN_VAL: \
+ ("Individu / Validation nomination",),
+ OperationType.REG_REQUEST_CAN: \
+ ("Inscription / Annulation d'une demande d'inscription",),
+ OperationType.REG_REQUEST_NEW: \
+ ("Inscription / Création d'une demande d'inscription",),
+ OperationType.REG_REQUEST_VAL: \
+ ("Inscription / Validation d'une demande d'inscription",),
+ OperationType.RALREG_REQUEST_NEW: \
+ ("Inscription rassemblement / Création Demande",),
+ OperationType.RALREG_REQUEST_MID_VAL: \
+ ("Inscription rassemblement / Validation Intermédiaire Demande",),
+ OperationType.PL_NEW: \
+ ("Lieu d'activité / Création d'un lieu d'activité",),
+ OperationType.PL_EDIT: \
+ ("Lieu d'activité / Modification d'un lieu d'activité",),
+ OperationType.PAT_INSURE: \
+ ("Patrimoine / Assurance",),
+ OperationType.PAT_INSURE_REQUEST: \
+ ("Patrimoine / Demande d'assurance",),
+ OperationType.PAT_EDIT: \
+ ("Patrimoine / Modification",),
+ OperationType.PEDA_XLS_IMPORT: \
+ ("Projet pédagogique / Import d'un fichier matrice",),
+ OperationType.PEDA_XLS_DEL: \
+ ("Projet pédagogique / Suppression d'un fichier matrice",),
+ OperationType.ST_NEW: \
+ ("Structure / Création",),
+ OperationType.ST_START: \
+ ("Structure / Définition date début d'activité",),
+ OperationType.ST_SPEC: \
+ ("Structure / Modification spécialités",),
+ OperationType.ST_COPY: \
+ ("Structure / Recopie nouvelle saison",),
}
-_OperationTypeIds = {a.strip().casefold(): b \
- for a, b in _OperationTypeIds.items()}
-_OperationTypeNames = {b: a for a, b in _OperationTypeIds.items()}
+_OperationTypeLeads = {}
+_OperationTypeLeads.update({name.strip().casefold(): i \
+ for i, (name,) in _OperationTypeData.items()})
class OperationTypeData:
""" Operation type data (id, name). """
@@ -279,20 +282,35 @@ class OperationTypeData:
return False
return True
+ self.__id = OperationType.UNKNOWN
+ self.__name = None
+ data = None
+
if isinstance(value, OperationTypeData):
self.__id = value.id
- self.__name = name
+ self.__name = value.name
elif isid(value):
value = OperationType(value)
- self.__name = _OperationTypeNames.get(value, None)
self.__id = value
- elif type(value) != str:
- raise ValueError("Expected either a string, an OperationType " \
- "or None.")
+
+ data = _OperationTypeData.get(value, None)
else:
- self.__id = _OperationTypeIds.get(value.strip().casefold(),
- OperationType.UNKNOWN)
- self.__name = value
+ lead = value
+ if type(lead) == str:
+ lead = lead.strip().casefold()
+
+ try:
+ self.__id = _OperationTypeLeads[lead]
+ data = _OperationTypeData.get(self.__id, None)
+ except KeyError:
+ if type(value) == str:
+ self.__name = value
+ else:
+ raise ValueError("Could not determine an operation " \
+ "type.") from None
+
+ if data is not None:
+ self.__name = data[0]
self.__ncmp = self.__name.strip().casefold() \
if self.__name is not None else None