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

byceps.cli.commands.import_users   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
eloc 20
dl 0
loc 30
ccs 0
cts 15
cp 0
rs 10
c 0
b 0
f 0
wmc 3

1 Function

Rating   Name   Duplication   Size   Complexity  
A import_users() 0 17 3
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