(self, params, **kwargs)
| 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 = '' |
nothing calls this directly
no test coverage detected