modes
This commit is contained in:
@ -145,7 +145,8 @@ class FamilyAnnotator(Walk):
|
||||
(variable.auto_save is True or variable.auto_freeze is True):
|
||||
self._set_auto_mode(variable, modes_level[0])
|
||||
# mandatory variable without value is a basic variable
|
||||
elif variable.mandatory is True and \
|
||||
elif not self._has_mode(variable) and \
|
||||
variable.mandatory is True and \
|
||||
not hasattr(variable, 'default') and \
|
||||
not hasattr(variable, 'default_multi'):
|
||||
self._set_auto_mode(variable, modes_level[0])
|
||||
@ -170,11 +171,12 @@ class FamilyAnnotator(Walk):
|
||||
msg = f'leader/followers "{follower.name}" could not be auto_freeze'
|
||||
raise DictConsistencyError(_(msg), 30, leadership.xmlfiles)
|
||||
if leader_mode is not None:
|
||||
# leader's mode is minimum level
|
||||
if modes[leader_mode] > modes[follower.mode]:
|
||||
if self._has_mode(follower) and not self._has_mode(leadership.variable[0]):
|
||||
# if follower has mode but not the leader
|
||||
self._set_auto_mode(leadership.variable[0], follower.mode)
|
||||
else:
|
||||
# leader's mode is minimum level
|
||||
if self._has_mode(follower):
|
||||
msg = _(f'the follower "{follower.name}" is in "{follower.mode}" mode '
|
||||
f'but leader have the higher mode "{leader_mode}"')
|
||||
@ -219,7 +221,6 @@ class FamilyAnnotator(Walk):
|
||||
def _change_variable_mode(self,
|
||||
variable,
|
||||
family_mode: str,
|
||||
is_follower=False,
|
||||
) -> None:
|
||||
# none basic variable in high level family has to be in high level
|
||||
if modes[variable.mode] < modes[family_mode]:
|
||||
@ -233,13 +234,10 @@ class FamilyAnnotator(Walk):
|
||||
leadership,
|
||||
family_mode: str,
|
||||
) -> None:
|
||||
is_follower = False
|
||||
for follower in leadership.variable:
|
||||
self._change_variable_mode(follower,
|
||||
family_mode,
|
||||
is_follower,
|
||||
)
|
||||
is_follower = True
|
||||
leadership.variable[0].mode = None
|
||||
|
||||
def dynamic_families(self):
|
||||
|
Reference in New Issue
Block a user