Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(cli): add command for group creation #483

Merged
merged 2 commits into from
Jul 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,10 @@ jobs:
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]
requirements-level: [pypi]
python-version: ["3.9", "3.12"]
cache-service: [redis]
db-service: [postgresql14, mysql8]
search-service: [opensearch2]

include:
- db-service: postgresql14
Expand All @@ -41,7 +41,8 @@ jobs:
env:
CACHE: ${{ matrix.cache-service }}
DB: ${{ matrix.db-service }}
EXTRAS: tests,admin,${{ matrix.DB_EXTRAS }}
SEARCH: ${{ matrix.search-service }}
EXTRAS: tests,admin,${{ matrix.DB_EXTRAS }},${{ matrix.search-service }}
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down
18 changes: 18 additions & 0 deletions invenio_accounts/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@
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_db import db
from invenio_users_resources.proxies import current_groups_service
from werkzeug.datastructures import MultiDict
from werkzeug.local import LocalProxy

Expand Down Expand Up @@ -53,6 +55,11 @@ def domains():
"""Domain commands."""


@click.group()
def groups():
"""Group commands."""


@users.command("create")
@click.argument("email")
@click.password_option()
Expand Down Expand Up @@ -178,3 +185,14 @@ def domains_create(domain):
click.secho(f"Domain {domain} creating failed with {error}", fg="red")
else:
click.secho(f"Domain {domain} created successfully", fg="green")


@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")
2 changes: 1 addition & 1 deletion run-tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ fi
python -m check_manifest
python -m setup extract_messages --output-file /dev/null
python -m sphinx.cmd.build -qnN docs docs/_build/html
eval "$(docker-services-cli up --db ${DB:-postgresql} --cache ${CACHE:-redis} --env)"
eval "$(docker-services-cli up --db ${DB:-postgresql} --search ${SEARCH:-opensearch} --cache ${CACHE:-redis} --env)"
# Note: expansion of pytest_args looks like below to not cause an unbound
# variable error when 1) "nounset" and 2) the array is empty.
python -m pytest ${pytest_args[@]+"${pytest_args[@]}"}
Expand Down
8 changes: 8 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -62,6 +68,8 @@ flask.commands =
roles = invenio_accounts.cli:roles
users = invenio_accounts.cli:users
domains = invenio_accounts.cli:domains
groups = invenio_accounts.cli:groups

invenio_admin.views =
invenio_accounts_user = invenio_accounts.admin:user_adminview
invenio_accounts_role = invenio_accounts.admin:role_adminview
Expand Down