diff --git a/invenio_accounts/cli.py b/invenio_accounts/cli.py index 05f3c1fd..bd091c3e 100644 --- a/invenio_accounts/cli.py +++ b/invenio_accounts/cli.py @@ -2,6 +2,7 @@ # # This file is part of Invenio. # Copyright (C) 2015-2023 CERN. +# Copyright (C) 2024 Graz University of Technology. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. @@ -17,6 +18,8 @@ from flask.cli import with_appcontext from flask_security.forms import ConfirmRegisterForm from flask_security.utils import hash_password +from invenio_access.permissions import system_identity +from invenio_users_resources.proxies import current_groups_service from werkzeug.datastructures import MultiDict from werkzeug.local import LocalProxy @@ -44,6 +47,11 @@ def roles(): """Role commands.""" +@click.group() +def groups(): + """Group commands.""" + + @users.command("create") @click.argument("email") @click.password_option() @@ -154,3 +162,14 @@ def users_deactivate(user): click.secho('User "%s" has been deactivated.' % user, fg="green") else: click.secho('User "%s" was already deactivated.' % user, fg="yellow") + + +@groups.command("create") +@click.argument("name") +@with_appcontext +@commit +def groups_create(name): + """Create group.""" + _datastore.create_role(id=name, name=name, is_managed=False) + current_groups_service.rebuild_index(system_identity) + click.secho(f'Role "({name})s" created successfully.', fg="green") diff --git a/setup.cfg b/setup.cfg index 856a3864..882f7d5c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -31,11 +31,13 @@ install_requires = cryptography>=3.0.0 Flask-KVSession-Invenio>=0.6.3 Flask-Security-Invenio>=3.2.0 + invenio_access>=2.0.0 invenio-celery>=1.2.3 invenio-i18n>=2.0.0 invenio-mail>=1.0.2 invenio-rest>=1.2.4 invenio-theme>=2.0.0 + invenio_users_resources>=5.0.0 maxminddb-geolite2>=2017.404 pyjwt>=1.5.0 simplekv>=0.11.2 @@ -50,6 +52,10 @@ mysql = invenio-db[mysql]>=1.0.14 sqlite = invenio-db>=1.0.14 +opensearch1 = + invenio-search[opensearch1]>=2.1.0,<3.0.0 +opensearch2 = + invenio-search[opensearch2]>=2.1.0,<3.0.0 tests = mock>=1.3.0 invenio-app>=1.4.0 @@ -61,6 +67,7 @@ tests = flask.commands = roles = invenio_accounts.cli:roles users = invenio_accounts.cli:users + groups = invenio_accounts.cli:groups invenio_admin.views = invenio_accounts_user = invenio_accounts.admin:user_adminview invenio_accounts_role = invenio_accounts.admin:role_adminview