This commit is contained in:
2021-02-19 17:06:49 +01:00
parent 04f8fc048c
commit 99d9fb7e70
4 changed files with 23 additions and 19 deletions

View File

@ -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):