Passed
Push — main ( b25e28...d471db )
by Jochen
04:48
created

byceps.cli.commands.import_users.import_users()   A

Complexity

Conditions 3

Size

Total Lines 17
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
cc 3
eloc 15
nop 1
dl 0
loc 17
ccs 0
cts 12
cp 0
crap 12
rs 9.65
c 0
b 0
f 0
1
"""Import user accounts from JSON lines.
2
3
:Copyright: 2014-2022 Jochen Kupperschmidt
4
:License: Revised BSD (see `LICENSE` file for details)
5
"""
6
7
import click
8
from flask.cli import with_appcontext
9
10
from ...services.user import import_service
11
12
13
@click.command()
14
@click.argument('data_file', type=click.File())
15
@with_appcontext
16
def import_users(data_file) -> None:
17
    """Import user accounts."""
18
    lines = import_service.parse_lines(data_file)
19
    for line_number, line in enumerate(lines, start=1):
20
        try:
21
            user_dict = import_service.parse_user_json(line)
22
            user = import_service.import_user(user_dict)
23
            click.secho(
24
                f'[line {line_number}] Imported user {user.screen_name}.',
25
                fg='green',
26
            )
27
        except Exception as e:
28
            click.secho(
29
                f'[line {line_number}] Could not import user: {e}', fg='red'
30
            )
31