byceps/byceps

View on GitHub
byceps/cli/commands/import_roles.py

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
"""
byceps.cli.command.import_roles
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Import roles and their assigned permissions from a TOML file.

:Copyright: 2014-2024 Jochen Kupperschmidt
:License: Revised BSD (see `LICENSE` file for details)
"""

from pathlib import Path

import click
from flask.cli import with_appcontext

from byceps.services.authz import impex_service


_DEFAULT_DATA_FILE = Path('scripts') / 'data' / 'roles.toml'


@click.command()
@click.option(
    '-f',
    '--file',
    'data_file',
    type=click.Path(exists=True, dir_okay=False, path_type=Path),
    default=_DEFAULT_DATA_FILE,
)
@with_appcontext
def import_roles(data_file: Path) -> None:
    """Import authorization roles."""
    _import_roles(data_file)


def _import_roles(data_file: Path) -> None:
    click.echo('Importing roles ... ', nl=False)
    role_counts = impex_service.import_roles(data_file)
    click.secho('done. ', fg='green', nl=False)
    click.secho(
        f'Imported {role_counts.imported} roles, '
        f'skipped {role_counts.skipped} roles.',
    )