Project

General

Profile

Tâche #8707

Scénario #9379: Consolidation CREOLE

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

Added by Emmanuel GARETTE over 6 years ago. Updated over 6 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Start date:
10/28/2014
Due date:
11/07/2014
% Done:

100%

Estimated time:
1.50 h
Spent time:
Remaining (hours):
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

Related issues

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

Associated revisions

Revision 406660a7 (diff)
Added by Emmanuel GARETTE over 6 years ago

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

Revision 33084190 (diff)
Added by Joël Cuissinat over 6 years ago

Test unitaire pour calc_multi_condition avec default_mismatch

  • tests/test_genconfig.py : maj de test_calc_multi_condition()

Ref: #8707 @30m

History

#1 Updated by Luc Bourdot over 6 years ago

  • Parent task set to #9379

#2 Updated by Benjamin Bohard over 6 years ago

  • Estimated time set to 1.50 h
  • Remaining (hours) set to 1.5

#3 Updated by Emmanuel GARETTE over 6 years ago

  • Status changed from Nouveau to En cours
  • Start date set to 10/28/2014

#4 Updated by Emmanuel GARETTE over 6 years ago

  • Assigned To set to Emmanuel GARETTE

#5 Updated by Emmanuel GARETTE over 6 years ago

  • Status changed from En cours to Résolu
  • % Done changed from 0 to 100

#6 Updated by Emmanuel GARETTE over 6 years ago

  • Due date set to 11/07/2014
  • Remaining (hours) changed from 1.5 to 0.0

#7 Updated by Joël Cuissinat over 6 years ago

  • Status changed from Résolu to Fermé

OK validé par le test unitaire modifié.

Also available in: Atom PDF