Skip to content

Commit 89a10d3

Browse files
committed
transform_folder fails with "exceeded_depth" error. KC-827
1 parent 3b0cb00 commit 89a10d3

19 files changed

+455
-536
lines changed

keepercommander/commands/audit_alerts.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -641,7 +641,7 @@ def apply_recipient(recipient, options):
641641
file_name = http_body[1:]
642642
file_name = os.path.expanduser(file_name)
643643
if os.path.isfile(file_name):
644-
with open(file_name, 'rt') as tf:
644+
with open(file_name, 'rt', encoding='utf-8') as tf:
645645
webhook_body = tf.read()
646646
else:
647647
raise CommandError('', f'File \"{file_name}\" not found')

keepercommander/commands/automator.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ def execute(self, params, **kwargs): # type: (KeeperParams, **any) -> any
378378
if parts[0].lower() == 'file':
379379
filename = parts[1].strip()
380380
if os.path.isfile(filename):
381-
with open(filename, 'r') as f:
381+
with open(filename, 'r', encoding='utf-8') as f:
382382
value = f.read()
383383
if parts[0].lower() == 'base64':
384384
filename = parts[1].strip()

keepercommander/commands/base.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -780,3 +780,18 @@ def traverse_folder_tree(params, folder_uid, callback):
780780
if folder.subfolders:
781781
folders.extend(folder.subfolders)
782782
callback(folder)
783+
784+
@staticmethod
785+
def resolve_folder(params, folder_name): # type: (KeeperParams, str) -> Optional[str]
786+
if not folder_name:
787+
return
788+
789+
if folder_name in params.folder_cache:
790+
return folder_name
791+
else:
792+
rs = try_resolve_path(params, folder_name)
793+
if rs is not None:
794+
folder, record_name = rs
795+
if folder and not record_name:
796+
if folder.uid:
797+
return folder.uid

keepercommander/commands/enterprise.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1989,7 +1989,7 @@ def get_parser(self):
19891989
def enforcement_value_from_file(filepath):
19901990
filepath = os.path.expanduser(filepath)
19911991
if os.path.isfile(filepath):
1992-
with open(filepath, 'r') as f:
1992+
with open(filepath, 'r', encoding='utf-8') as f:
19931993
enforcement_value = f.read()
19941994
if ':' in enforcement_value:
19951995
# Validate JSON
@@ -2671,7 +2671,7 @@ def execute(self, params, **kwargs):
26712671
json_roles = json_roles[0]
26722672
file_name = kwargs.get('output')
26732673
if file_name:
2674-
with open(file_name, 'w') as f:
2674+
with open(file_name, 'w', encoding='utf-8') as f:
26752675
json.dump(json_roles, f, indent=4)
26762676
else:
26772677
return json.dumps(json_roles, indent=4)

keepercommander/commands/enterprise_create_user.py

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,16 @@
1313
import json
1414
import logging
1515
import re
16-
from typing import Optional
1716
from urllib.parse import urlunparse
1817

19-
from .base import RecordMixin, raise_parse_exception, suppress_exit, try_resolve_path
18+
from .base import RecordMixin, FolderMixin, raise_parse_exception, suppress_exit
2019
from .enterprise import EnterpriseCommand
2120
from .register import OneTimeShareCreateCommand
2221
from .. import api, crypto, utils, generator, rest_api, vault, record_management, vault_extensions, constants
2322
from ..constants import EMAIL_PATTERN
23+
from ..error import CommandError
2424
from ..loginv3 import LoginV3API
25-
from ..params import KeeperParams
2625
from ..proto import enterprise_pb2
27-
from ..error import CommandError
2826

2927

3028
def register_commands(commands):
@@ -137,7 +135,7 @@ def execute(self, params, **kwargs):
137135
folder_uid = None
138136
folder_name = kwargs.get('folder')
139137
if folder_name:
140-
folder_uid = self.resolve_folder(params, folder_name)
138+
folder_uid = FolderMixin.resolve_folder(params, folder_name)
141139

142140
keeper_url = urlunparse(('https', params.server, '/vault', None, None, f'email/{email}'))
143141
record = vault.TypedRecord()
@@ -173,21 +171,6 @@ def execute(self, params, **kwargs):
173171
logging.info('User \"%s\" credentials are stored to record \"%s\"', login_facade.login, login_facade.title)
174172
return record.record_uid
175173

176-
@staticmethod
177-
def resolve_folder(params, folder_name): # type: (KeeperParams, str) -> Optional[str]
178-
if not folder_name:
179-
return
180-
181-
if folder_name in params.folder_cache:
182-
return folder_name
183-
else:
184-
rs = try_resolve_path(params, folder_name)
185-
if rs is not None:
186-
folder, record_name = rs
187-
if folder and not record_name:
188-
if folder.uid:
189-
return folder.uid
190-
191174

192175
class StoreUserKeysCommand(EnterpriseCommand):
193176
def get_parser(self):

keepercommander/commands/enterprise_push.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ def execute(self, params, **kwargs):
158158

159159
file_name = os.path.abspath(os.path.expanduser(name))
160160
if os.path.isfile(file_name):
161-
with open(file_name, 'r') as f:
161+
with open(file_name, 'r', encoding='utf-8') as f:
162162
template_records = json.load(f)
163163
else:
164164
raise CommandError('enterprise-push', f'File {name} does not exists')

0 commit comments

Comments
 (0)