Projet

Général

Profil

Anomalie #6261

L'auto_freeze ne fonctionne pas correctement si on la <value> par défaut

Ajouté par Joël Cuissinat il y a plus de 10 ans. Mis à jour il y a plus de 10 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
30/09/2013
Echéance:
04/10/2013
% réalisé:

100%

Temps estimé:
0.50 h
Temps passé:
Distribution:
EOLE 2.4

Description

Si on place un auto_freeze='True' sur une variable possédant une valeur par défaut, celle-ci n'est pas enregistrée de force dans le config.eol

Révisions associées

Révision 63b0201f (diff)
Ajouté par Joël Cuissinat il y a plus de 10 ans

Correction auto_freeze sur une valeur par défaut

Fixes #6261 @20m

Révision 78fcaed2 (diff)
Ajouté par Emmanuel GARETTE il y a plus de 10 ans

creole/loader.py : charger les valeurs mêmes si le mode est différent
creole/var_loader.py : les auto_freezes doivent être en mode basic au chargement

ref #6261

Révision 4e0bec56 (diff)
Ajouté par Emmanuel GARETTE il y a plus de 10 ans

afficher les auto_freeze avec valeur par défaut au moment du diff (fixes #6261 @1h)

Historique

#1 Mis à jour par Joël Cuissinat il y a plus de 10 ans

  • Statut changé de Nouveau à Résolu
  • % réalisé changé de 0 à 100

#2 Mis à jour par Joël Cuissinat il y a plus de 10 ans

  • Version cible changé de Eole 2.4-alpha2 à Eole 2.4-beta1

report de la qualification => ldap_base_dn sur module Thot

#3 Mis à jour par Emmanuel GARETTE il y a plus de 10 ans

<gnunux> jojo2024, au fait pour #6261 ... tu peux me dire si tu vois bien la variable en mode basic ?
<gnunux> et regarder si tu le vois bien dans le 1er "diff"

#4 Mis à jour par Joël Cuissinat il y a plus de 10 ans

  • Statut changé de Résolu à À valider
  • Assigné à changé de Joël Cuissinat à Emmanuel GARETTE
  • % réalisé changé de 100 à 50

Si la variable n'est pas "mandatory sans valeur" elle n'apparaît pas dans le mode "basic" et n'est pas enregistrée non plus !

#5 Mis à jour par Emmanuel GARETTE il y a plus de 10 ans

Pour reproduire, ajouter le dictionnaire local :

<?xml version="1.0" encoding="utf-8"?>
<creole>
    <files/>
    <variables>
        <family name='général' icon='wrench'>
            <variable name='eole_module_3' type='string' description="Nom du module EOLE" auto_freeze="True">
                <value>eolebase</value>
            </variable>
        </family>
    </variables>
</creole>

Il faut être en mode "basic" :

# python
Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cjson
>>> fh = file('/etc/eole/config.eol', 'r')
>>> store = cjson.decode(fh.read(), all_unicode=True)
>>> store['eole_module_3']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'eole_module_3'
>>> 
>>> from creole.loader import creole_loader, config_save_values
>>> a=creole_loader(rw=True)
>>> a.cfgimpl_get_settings().append('normal')
>>> a.cfgimpl_get_settings().append('expert')
>>> o=a.unwrap_from_path('creole.general.eole_module_3')
>>> print a.getowner(o)
default
>>> print a.cfgimpl_get_settings()[o]
['auto_freeze', 'normal']
>>> 
>>> config_save_values(a, 'creole', eol_file='/tmp/config.eol')
True
>>> 
>>> fh = file('/tmp/config.eol', 'r')
>>> store = cjson.decode(fh.read(), all_unicode=True)
>>> store['eole_module_3']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'eole_module_3'
>>> 

eole_module_3 n'est pas enregistré ni mis en mode basic.

#6 Mis à jour par Emmanuel GARETTE il y a plus de 10 ans

  • % réalisé changé de 50 à 80

La variable est bien enregistrer dans le fichier alors qu'on est en mode "basic".
La variable est bien en mode "basic".

# python
Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cjson
>>> fh = file('/etc/eole/config.eol', 'r')
>>> store = cjson.decode(fh.read(), all_unicode=True)
>>> store['eole_module_3']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'eole_module_3'
>>> 
>>> from creole.loader import creole_loader, config_save_values
>>> a=creole_loader(rw=True)
>>> a.cfgimpl_get_settings().append('normal')
>>> a.cfgimpl_get_settings().append('expert')
>>> o=a.unwrap_from_path('creole.general.eole_module_3')
>>> print a.getowner(o)
default
>>> print a.cfgimpl_get_settings()[o]
['auto_freeze', 'basic']
>>> 
>>> config_save_values(a, 'creole', eol_file='/tmp/config.eol')
True
>>> 
>>> fh = file('/tmp/config.eol', 'r')
>>> store = cjson.decode(fh.read(), all_unicode=True)
>>> store['eole_module_3']
{u'owner': u'user', u'val': u'eolebase'}

Il reste à faire apparaitre la variable dans le "diff" si la variable est en "auto_freeze" sans le "freeze".

#7 Mis à jour par Emmanuel GARETTE il y a plus de 10 ans

Variable auto_freeze non freezé (donc pas dans le fichier) pas visible dans le diff_config :

# python
Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cjson
>>> fh = file('/etc/eole/config.eol', 'r')
>>> store = cjson.decode(fh.read(), all_unicode=True)
>>> store['eole_module_3']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'eole_module_3'
>>> 
>>> from eolegenconfig.lib import diff_config
>>> 
>>> diff_config('pouet')
[]
>>> 

#8 Mis à jour par Emmanuel GARETTE il y a plus de 10 ans

  • Statut changé de À valider à Résolu
  • % réalisé changé de 80 à 100

#9 Mis à jour par Emmanuel GARETTE il y a plus de 10 ans

La valeur n'est pas dans le config.eol mais apparait bien dans le diff :

# python
Python 2.7.3 (default, Sep 26 2013, 20:03:06) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cjson
>>> fh = file('/etc/eole/config.eol', 'r')
>>> store = cjson.decode(fh.read(), all_unicode=True)
>>> store['eole_module_3']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'eole_module_3'
>>> 
>>> from eolegenconfig.lib import diff_config
>>> 
>>> diff_config('pouet')
eole_module_3 creole.general.eole_module_3 ['auto_freeze', 'basic']
[{'multi': False, 'hidden': False, 'mandatory': False, 'description': 'Nom du module EOLE', 'new_user': 'gen_config', 'editable': True, 'value': u'eolebase', 'id': 'eole_module_3', 'warning': '', 'mode': 'basic', 'new_value': u'eolebase', 'auto_freeze': True, 'type': 'unicode', 'categoryid': 'general', 'default_owner': True, 'help': None}]
>>> 

Si on enregistre la config (donc enregistre la valeur) la variable n'est plus proposer dans le diff

>>> from creole.loader import creole_loader
>>> c=creole_loader(rw=True)
>>> from creole.loader import config_save_values
>>> config_save_values(c, 'creole')
True
>>> import cjson
>>> fh = file('/etc/eole/config.eol', 'r')
>>> store = cjson.decode(fh.read(), all_unicode=True)
>>> store['eole_module_3']
{u'owner': u'user', u'val': u'eolebase'}
>>> from eolegenconfig.lib import diff_config
>>> diff_config('rah')
[]

#10 Mis à jour par Joël Cuissinat il y a plus de 10 ans

  • Statut changé de Résolu à Fermé

Formats disponibles : Atom PDF