copy context owner when user copied a config/metaconfig
Context owner is now in values (no more in settings). The context owner is set in storage. So when copy/deepcopy a config, owner is copied to. For user, when export values, context owner is not returned by default.
This commit is contained in:
@ -763,9 +763,18 @@ class TiramisuContextValue(TiramisuContext):
|
||||
withoption=withoption,
|
||||
withvalue=withvalue)
|
||||
|
||||
def exportation(self):
|
||||
def exportation(self,
|
||||
with_default_owner: bool=False):
|
||||
"""export all values"""
|
||||
return self.config_bag.context.cfgimpl_get_values()._p_.exportation()
|
||||
exportation = self.config_bag.context.cfgimpl_get_values()._p_.exportation()
|
||||
if not with_default_owner:
|
||||
exportation = [list(exportation[0]), list(exportation[1]), list(exportation[2]), list(exportation[3])]
|
||||
index = exportation[0].index(None)
|
||||
exportation[0].pop(index)
|
||||
exportation[1].pop(index)
|
||||
exportation[2].pop(index)
|
||||
exportation[3].pop(index)
|
||||
return exportation
|
||||
|
||||
def importation(self, values):
|
||||
"""import values"""
|
||||
@ -778,7 +787,7 @@ class TiramisuContextOwner(TiramisuContext):
|
||||
|
||||
def get(self):
|
||||
"""get default owner"""
|
||||
return self.config_bag.context.cfgimpl_get_settings().getowner()
|
||||
return self.config_bag.context.cfgimpl_get_values().get_context_owner()
|
||||
|
||||
def set(self, owner):
|
||||
"""set default owner"""
|
||||
@ -787,7 +796,7 @@ class TiramisuContextOwner(TiramisuContext):
|
||||
except AttributeError:
|
||||
owners.addowner(owner)
|
||||
obj_owner = getattr(owners, owner)
|
||||
self.config_bag.context.cfgimpl_get_settings().setowner(obj_owner)
|
||||
self.config_bag.context.cfgimpl_get_values().set_context_owner(obj_owner)
|
||||
|
||||
|
||||
class TiramisuContextProperty(TiramisuContext):
|
||||
|
@ -1135,7 +1135,7 @@ class KernelMetaConfig(KernelGroupConfig):
|
||||
session_id,
|
||||
type_='config',
|
||||
persistent=False):
|
||||
if session_id in [child._impl_name for child in self._impl_children]: # pragma: no cover
|
||||
if session_id in [child._impl_name for child in self._impl_children]:
|
||||
raise ConflictError(_('config name must be uniq in '
|
||||
'groupconfig for {0}').format(session_id))
|
||||
if type_ == 'config':
|
||||
@ -1147,7 +1147,7 @@ class KernelMetaConfig(KernelGroupConfig):
|
||||
optiondescription=self._impl_descr,
|
||||
session_id=session_id,
|
||||
persistent=persistent)
|
||||
else:
|
||||
else: # pragma: no cover
|
||||
raise ConfigError(_('unknown type {}').format(type_))
|
||||
# Copy context properties/permissives
|
||||
config.cfgimpl_get_settings().set_context_properties(self.cfgimpl_get_settings().get_context_properties(), config)
|
||||
|
@ -325,7 +325,9 @@ undefined = Undefined()
|
||||
#____________________________________________________________
|
||||
class Settings(object):
|
||||
"``config.Config()``'s configuration options settings"
|
||||
__slots__ = ('_owner', '_p_', '_pp_', '__weakref__')
|
||||
__slots__ = ('_p_',
|
||||
'_pp_',
|
||||
'__weakref__')
|
||||
|
||||
def __init__(self,
|
||||
properties,
|
||||
@ -340,7 +342,6 @@ class Settings(object):
|
||||
- sqlite3 -> persistent
|
||||
"""
|
||||
# generic owner
|
||||
self._owner = owners.user
|
||||
self._p_ = properties
|
||||
self._pp_ = permissives
|
||||
|
||||
@ -779,17 +780,3 @@ class Settings(object):
|
||||
self._read(rw_remove,
|
||||
rw_append,
|
||||
context)
|
||||
|
||||
#____________________________________________________________
|
||||
# default owner methods
|
||||
|
||||
def setowner(self,
|
||||
owner):
|
||||
":param owner: sets the default value for owner at the Config level"
|
||||
if owner in forbidden_owners:
|
||||
raise ValueError(_('set owner "{0}" is forbidden').format(str(owner)))
|
||||
|
||||
self._owner = owner
|
||||
|
||||
def getowner(self):
|
||||
return self._owner
|
||||
|
@ -183,7 +183,10 @@ class Values(Cache):
|
||||
self._values = tuple(values)
|
||||
|
||||
# owner
|
||||
def setowner(self, path, owner, index=None):
|
||||
def setowner(self,
|
||||
path,
|
||||
owner,
|
||||
index=None):
|
||||
"""change owner for a path
|
||||
"""
|
||||
idx = self._values[0].index(path)
|
||||
|
@ -31,7 +31,8 @@ class Values(object):
|
||||
'__weakref__')
|
||||
|
||||
def __init__(self,
|
||||
storage):
|
||||
storage,
|
||||
default_owner=owners.user):
|
||||
"""
|
||||
Initializes the values's dict.
|
||||
|
||||
@ -40,6 +41,12 @@ class Values(object):
|
||||
"""
|
||||
# store the storage
|
||||
self._p_ = storage
|
||||
# set default owner
|
||||
self._p_.setvalue(None,
|
||||
None,
|
||||
default_owner,
|
||||
None,
|
||||
True)
|
||||
|
||||
#______________________________________________________________________
|
||||
# get value
|
||||
@ -253,7 +260,7 @@ class Values(object):
|
||||
_commit):
|
||||
|
||||
context = option_bag.config_bag.context
|
||||
owner = context.cfgimpl_get_settings().getowner()
|
||||
owner = self.get_context_owner()
|
||||
if 'validator' in option_bag.config_bag.properties:
|
||||
if option_bag.index is not None or option_bag.option._has_consistencies(context):
|
||||
# set value to a fake config when option has dependency
|
||||
@ -610,3 +617,19 @@ class Values(object):
|
||||
[],
|
||||
context,
|
||||
od_config_bag)
|
||||
|
||||
#____________________________________________________________
|
||||
# default owner methods
|
||||
def set_context_owner(self,
|
||||
owner):
|
||||
":param owner: sets the default value for owner at the Config level"
|
||||
if owner in forbidden_owners:
|
||||
raise ValueError(_('set owner "{0}" is forbidden').format(str(owner)))
|
||||
|
||||
self._p_.setowner(None,
|
||||
owner,
|
||||
index=None)
|
||||
|
||||
def get_context_owner(self):
|
||||
return self._p_.getowner(None,
|
||||
None)
|
||||
|
Reference in New Issue
Block a user