MCPcopy Create free account
hub / github.com/Keeper-Security/Commander / execute

Method execute

keepercommander/commands/recordv3.py:149–457  ·  view source on GitHub ↗
(self, params, **kwargs)

Source from the content-addressed store, hash-verified

147 return add_parser
148
149 def execute(self, params, **kwargs):
150 options = kwargs.get('option') or []
151 options = [] if options == [None] else options
152 has_v3_options = bool(kwargs.get('data') or kwargs.get('data_file') or options)
153 has_v2_options = bool(kwargs.get('legacy') or kwargs.get('title') or kwargs.get('login') or kwargs.get('password') or kwargs.get('url') or kwargs.get('notes') or kwargs.get('custom'))
154 if has_v2_options and has_v3_options:
155 logging.error(bcolors.FAIL + 'Use either legacy arguments only (--title, --pass, --login --url, --notes, --custom) or record type options only (type=login title=MyRecord etc.) see. https://github.com/Keeper-Security/Commander/blob/master/record_types.md' + bcolors.ENDC)
156 return
157
158 # v2 record: when --legacy flag is set or a legacy option (--title, --login, --pass, --url, --notes, --custom)
159 # v2 record: when no v3 option set - neither -v3d nor -v3f is set
160 # v3 record: when no --legacy flag and no legacy options (--title, --login, --pass, --url, --notes, --custom)
161 # NB! v3 record needs at least one of: -v3d or -v3f or -o to be set
162 is_v2 = bool(kwargs.get('legacy'))
163 # 2021-06-02 Legacy/v2 record is created only with -v2|--legacy option otherwise create v3 type=login from legacy options
164 # is_v2 = is_v2 or bool(kwargs.get('title') or kwargs.get('login') or kwargs.get('password') or kwargs.get('url') or kwargs.get('notes') or kwargs.get('custom'))
165 # is_v2 = is_v2 or not bool(kwargs.get('data') or kwargs.get('data_file') or kwargs.get('option'))
166 v3_enabled = params.settings.get('record_types_enabled') if params.settings and isinstance(params.settings.get('record_types_enabled'), bool) else False
167 # if is_v2 or (has_v2_options and not v3_enabled):
168 if is_v2 or (not v3_enabled and not has_v3_options):
169 return recordv2.RecordAddCommand().execute(params, **kwargs)
170
171 if not v3_enabled:
172 logging.error(bcolors.FAIL + 'Record Types are NOT enabled for this account. Please contact your enterprise administrator.' + bcolors.ENDC)
173 return
174
175 # positional aguments can't be in a mutually exclusive groups
176 if has_v3_options and options and bool(kwargs.get('data') or kwargs.get('data_file')):
177 logging.error(bcolors.FAIL + 'Positional arguments [option...]: not allowed with argument -v3d/--data or -v3f/--from-file' + bcolors.ENDC)
178 return
179
180 if has_v2_options:
181 options.append('type=login')
182 if kwargs.get('title'):
183 options.append('title='+ str(kwargs.get('title')))
184 kwargs['title'] = None
185 if kwargs.get('notes'):
186 options.append('notes='+ str(kwargs.get('notes')))
187 kwargs['notes'] = None
188 if kwargs.get('login'):
189 options.append('f.login='+ str(kwargs.get('login')))
190 kwargs['login'] = None
191 if kwargs.get('password'):
192 options.append('f.password='+ str(kwargs.get('password')))
193 kwargs['password'] = None
194 if kwargs.get('url'):
195 options.append('f.url='+ str(kwargs.get('url')))
196 kwargs['url'] = None
197 if kwargs.get('custom'):
198 clst = recordv3.RecordV3.custom_options_to_list(kwargs.get('custom'))
199 for c in clst:
200 if 'value' in c:
201 c['value'] = self.custom_field_value(c['value'])
202 kwargs['custom_list'] = clst
203 kwargs['custom'] = None
204 kwargs['option'] = options
205
206 rt_def = ''

Callers

nothing calls this directly

Calls 15

get_parserMethod · 0.95
try_resolve_pathFunction · 0.85
get_password_from_rulesFunction · 0.85
getMethod · 0.80
custom_field_valueMethod · 0.80
__contains__Method · 0.80
enforceMethod · 0.80
formatMethod · 0.80
get_recordMethod · 0.80

Tested by

no test coverage detected