byceps/byceps

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

Summary

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

Initialize the database.

- Create tables.
- Import authorization roles.
- Add supported languages.

Existing tables will be ignored.

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

import click
from flask.cli import with_appcontext

from byceps.services.language import language_service

from .create_database_tables import _create_database_tables
from .import_roles import _DEFAULT_DATA_FILE, _import_roles


@click.command()
@with_appcontext
def initialize_database() -> None:
    """Initialize the database."""
    _create_database_tables()
    _import_roles(_DEFAULT_DATA_FILE)
    _add_languages()


def _add_languages() -> None:
    for code in ('en', 'de'):
        click.echo(f'Adding language "{code}" ... ', nl=False)
        language_service.create_language(code)
        click.secho('done. ', fg='green')