Tâche #8707
Scénario #9379: Consolidation CREOLE
eosfunc.calc_multi_condition : il n'est pas possible de mettre des match/mismatch disabled
Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
Restant à faire (heures):
0.0
Description
Si on défini une variable disable en tant que variable match ou mismatch dans condition calc_multi_condition, ce sont les valeurs par défaut qui sont utilisés.
Il n'est pas possible avec le code actuel de changer les valeurs par défaut.
Je propose une nouvelle version calc_multi_condition (iso fonctionnel avec l'existant) :
def calc_multi_condition(param, match=None, mismatch=None, operator='AND', default_match=None, default_mismatch=None, **conditions): """param: réponse testée sur toutes les conditions. Si les réponses des conditions sont différentes mettre une liste avec chacune des conditions a tester operator: doit être 'AND' ou 'OR' match: valeur de retour si toutes les conditions sont validées (si operator est à 'AND') ou si une des conditions sont validée (si operator est à 'OR') mismatch: valeur de retour si au moins une des conditions n'est pas validée (si operator est à 'AND') ou toutes les conditions ne sont pas validées (si operator est à 'OR') si les variables match ou mismatch sont optional ou hidden, recupère le contenu de la variable default_match ou default_mismatch conditions: liste des conditions a tester. exemple: <auto name='calc_multi_condition' target='test_activer_bacula_dir'> <param>['oui', 'non']</param> <param type='eole' name='condition_1'>activer_bacula</param> <param type='eole' name='condition_2'>activer_bacula_dir</param> <param name='match'>oui</param> <param name='mismatch'>non</param> </auto> """ if operator not in ('AND', 'OR'): raise ValueError('operator doit être "AND" ou "OR"') if match is None: if default_match is None: match = 'oui' else: if default_match == 'None': match = None else: match = default_match if mismatch is None: if default_mismatch is None: mismatch = 'non' else: if default_mismatch == 'None': mismatch = None else: mismatch = default_mismatch conditions_keys = conditions.keys() conditions_keys.sort() for condition in conditions_keys: if not condition.startswith('condition_'): raise ValueError('Les clefs de condition doivent commencer par "condition_"') if isinstance(param, list) and len(param) != len(conditions): raise ValueError('Nombre de conditions et de params différent dans calc_multi_condition') for num in range(0, len(conditions)): key = conditions_keys[num] value = conditions[key] if type(param) != list: if operator == 'AND' and value != param: return mismatch if operator == 'OR' and value == param: return match else: if operator == 'AND' and value != param[num]: return mismatch if operator == 'OR' and value == param[num]: return match if operator == 'AND': return match else: return mismatch
Demandes liées
Révisions associées
eosfunc.calc_multi_condition : avec match et mismatch disabled (fixes #8707 @1h)
Test unitaire pour calc_multi_condition avec default_mismatch
- tests/test_genconfig.py : maj de test_calc_multi_condition()
Ref: #8707 @30m
Historique
#1 Mis à jour par Luc Bourdot il y a plus de 9 ans
- Tâche parente mis à #9379
#2 Mis à jour par Benjamin Bohard il y a plus de 9 ans
- Temps estimé mis à 1.50 h
- Restant à faire (heures) mis à 1.5
#3 Mis à jour par Emmanuel GARETTE il y a plus de 9 ans
- Statut changé de Nouveau à En cours
- Début mis à 28/10/2014
#4 Mis à jour par Emmanuel GARETTE il y a plus de 9 ans
- Assigné à mis à Emmanuel GARETTE
#5 Mis à jour par Emmanuel GARETTE il y a plus de 9 ans
- Statut changé de En cours à Résolu
- % réalisé changé de 0 à 100
Appliqué par commit 406660a763ee46dd9ccdf775d122adee07df3bd8.
#6 Mis à jour par Emmanuel GARETTE il y a plus de 9 ans
- Echéance mis à 07/11/2014
- Restant à faire (heures) changé de 1.5 à 0.0
#7 Mis à jour par Joël Cuissinat il y a plus de 9 ans
- Statut changé de Résolu à Fermé
OK validé par le test unitaire modifié.