Projet

Général

Profil

Tâche #8707

Scénario #9379: Consolidation CREOLE

eosfunc.calc_multi_condition : il n'est pas possible de mettre des match/mismatch disabled

Ajouté par Emmanuel GARETTE il y a plus de 9 ans. Mis à jour il y a plus de 9 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
28/10/2014
Echéance:
07/11/2014
% réalisé:

100%

Temps estimé:
1.50 h
Temps passé:
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

Lié à eole-apt-cacher-ng - Tâche #8699: Propositions de modifications pour pouvoir utiliser en local apt-cacher Nouveau
Copié vers Documentations - Tâche #9485: eosfunc.calc_multi_condition : il est possible de mettre des match/mismatch disabled Fermé 16/01/2015

Révisions associées

Révision 406660a7 (diff)
Ajouté par Emmanuel GARETTE il y a plus de 9 ans

eosfunc.calc_multi_condition : avec match et mismatch disabled (fixes #8707 @1h)

Révision 33084190 (diff)
Ajouté par Joël Cuissinat il y a plus de 9 ans

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

#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é.

Formats disponibles : Atom PDF