Passed
Push — main ( 37a38c...b6b949 )
by Jochen
04:51
created

import_users.execute()   A

Complexity

Conditions 3

Size

Total Lines 15
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 14
nop 1
dl 0
loc 15
rs 9.7
c 0
b 0
f 0
1
#!/usr/bin/env python
2
3
"""Import users from JSON lines.
4
5
:Copyright: 2006-2021 Jochen Kupperschmidt
6
:License: Revised BSD (see `LICENSE` file for details)
7
"""
8
9
import click
10
11
from byceps.services.user import import_service
12
13
from _util import call_with_app_context
14
15
16
@click.command()
17
@click.argument('data_file', type=click.File())
18
def execute(data_file) -> None:
19
    lines = import_service.parse_lines(data_file)
20
    for line_number, line in enumerate(lines, start=1):
21
        try:
22
            user_dict = import_service.parse_user_json(line)
23
            user = import_service.create_user(user_dict)
24
            click.secho(
25
                f'[line {line_number}] Imported user {user.screen_name}.',
26
                fg='green',
27
            )
28
        except Exception as e:
29
            click.secho(
30
                f'[line {line_number}] Cound not import user: {e}', fg='red'
31
            )
32
33
34
if __name__ == '__main__':
35
    call_with_app_context(execute)
36