diff options
| -rwxr-xr-x | src/etoolkit/etoolkit.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/etoolkit/etoolkit.py b/src/etoolkit/etoolkit.py index 9b95a73..aab42a0 100755 --- a/src/etoolkit/etoolkit.py +++ b/src/etoolkit/etoolkit.py | |||
| @@ -75,12 +75,16 @@ class EtoolkitInstance: | |||
| 75 | @property | 75 | @property |
| 76 | def master_password(self) -> str: | 76 | def master_password(self) -> str: |
| 77 | """master_password-property""" | 77 | """master_password-property""" |
| 78 | return self._master_password | 78 | if self._master_password is not None: |
| 79 | return self._master_password | ||
| 80 | return None if self._parent is None else self._parent.master_password | ||
| 79 | 81 | ||
| 80 | @master_password.setter | 82 | @master_password.setter |
| 81 | def master_password(self, value): | 83 | def master_password(self, value): |
| 82 | """master_password-property setter""" | 84 | """master_password-property setter""" |
| 83 | self._master_password = value | 85 | self._master_password = value |
| 86 | if self._parent is not None and self._parent.master_password is None: | ||
| 87 | self._parent.master_password = value | ||
| 84 | 88 | ||
| 85 | @property | 89 | @property |
| 86 | def master_password_hash(self) -> str: | 90 | def master_password_hash(self) -> str: |
| @@ -106,6 +110,9 @@ class EtoolkitInstance: | |||
| 106 | def prompt_func(self, value): | 110 | def prompt_func(self, value): |
| 107 | """prompt_func-property setter""" | 111 | """prompt_func-property setter""" |
| 108 | self._prompt_func = value | 112 | self._prompt_func = value |
| 113 | if self._parent is not None and self._parent.prompt_func is None: | ||
| 114 | # will be set even if None | ||
| 115 | self._parent.prompt_func = value | ||
| 109 | 116 | ||
| 110 | @property | 117 | @property |
| 111 | def raw_env_variables(self) -> dict: | 118 | def raw_env_variables(self) -> dict: |
| @@ -406,7 +413,8 @@ class EtoolkitInstance: | |||
| 406 | raise EtoolkitInstanceError( | 413 | raise EtoolkitInstanceError( |
| 407 | 'Neither password or prompt function set' | 414 | 'Neither password or prompt function set' |
| 408 | ) | 415 | ) |
| 409 | self._master_password = self._prompt_func( | 416 | # use master_password setter in order to propagate to parent |
| 417 | self.master_password = self._prompt_func( | ||
| 410 | self._master_password_hash, confirm=False | 418 | self._master_password_hash, confirm=False |
| 411 | ) | 419 | ) |
| 412 | return EtoolkitInstance.decrypt(self._master_password, evalue) | 420 | return EtoolkitInstance.decrypt(self._master_password, evalue) |
